-
Notifications
You must be signed in to change notification settings - Fork 9.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTPS proxy support #8373
Comments
Apache http client can support HTTPS proxy: HttpHost proxy = new HttpHost("https","www.xxx.xxx",8888);
CloseableHttpClient client = HttpClients.custom()
.setProxy(proxy)
.build(); So can OKHTTP client support it also? |
I think we should support. I've set up tests to validate against other proxily servers but haven't been able to easily verify Https behaviour. Do you have a public test server I can test against? That you know is working ? |
Thanks so much for your reply. I don’t currently have a publicly available proxy for you to test; however this is the project we are working from to set up our proxy. I hope this is somewhat helpful. |
I confirmed with smokescreen that this clumsy workaround works
|
OK change in code is simple, except our dependence on java.net.Proxy is limiting. @swankjesse would it make sense to have our own model for Proxy? |
A quick exploration, I'll revert some of this and see if it looks ok |
Hi @yschimke @swankjesse, Do we have release date for this feature? |
I don't think clean support will make 5.0, as it would require a new Proxy domain model. Instead I'm aiming to allow this workaround #8379 |
@yschimke Do you mean we can have a workaround method without changing the source code? |
@itning No, would require changing the client. How are you configuring this proxy? Maybe I can see if there is a way to make that path work. |
We don't currently have a similar API to Apache
|
For now we use apache http client like this: #8373 (comment) |
This would require this clumsy workaround for OkHttp Or at minimum
|
I use the code, but got error: Exception in thread "main" java.lang.IllegalArgumentException: socketFactory instanceof SSLSocketFactory
at okhttp3.OkHttpClient$Builder.socketFactory(OkHttpClient.kt:723)
at xxx.main(xxx.java:178) |
Sorry, I should have been clearer. It requires this PR, unless you wrap that socket factory again. |
@yschimke I'm sorry to bother you again and request when I can use the solution you provided? |
For now, try something like this
DelegatingSocketFactory would be something like
|
Excuse me, it might not be the right place to ask this question, but I really felt confused about it and found nothing useful after googling my question. Why the
|
https://datatracker.ietf.org/doc/html/rfc7540#section-3.4 The client and server must start the http/2 handshake without prior negotiation. So this would corrupt if the server expects plaintext or vice versa. You could still support https/2 over https on a different port, but you can clone the client for that case. Supporting a mix seems really niche and problematic. |
Thanks. Sounds great to clone the client. However, I didn't really understand what you mean by http/2 handshake. A followup question if you can spare the time: Suppose that I set protocols to be I thought that Probably, issues would rise If I want to send HTTP/1.1 request, like |
Yep, it could be made to work that way. But in general, I don't think it's clear what everyone would expect. Enabling this but only as a 100% toggle was probably simpler. |
Got it, thank you~ |
Currently, it is my understanding that okhttp supports two types of proxys: HTTP/SOCKS, which are the proxy types built into JDK, but the vast majority of the use cases involve HTTPS proxies; any plans to support them?
The text was updated successfully, but these errors were encountered: