gpt4 book ai didi

java - 泽西客户端 + 设置代理

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:25 25 4
gpt4 key购买 nike

您好,我有一个用于上传文件的 Jersey 客户端。我尝试在本地使用它,一切正常。但是在生产环境中我必须设置代理。我浏览了几页但无法获得确切的解决方案。有人可以帮我解决这个问题吗?

这是我的客户端代码:

File file = new File("e:\\test.zip");
FormDataMultiPart part = new FormDataMultiPart();
part.bodyPart(new FileDataBodyPart("file", file, MediaType.APPLICATION_OCTET_STREAM_TYPE));
WebResource resource = null;

if (proxy.equals("yes")) {
// How do i configure client in this case?
} else {
// this uses system proxy i guess
resource = Client.create().resource(url);
}

String response = (String) resource.type(MediaType.MULTIPART_FORM_DATA_TYPE).post(String.class, part);
System.out.println(response);

最佳答案

如果您想避免在遗留项目中使用更多库并且不需要代理身份验证,则有一种更简单的方法:

首先你需要一个实现HttpURLConnectionFactory的类:

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;

import com.sun.jersey.client.urlconnection.HttpURLConnectionFactory;


public class ConnectionFactory implements HttpURLConnectionFactory {

Proxy proxy;

private void initializeProxy() {
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("myproxy.com", 3128));
}

public HttpURLConnection getHttpURLConnection(URL url) throws IOException {
initializeProxy();
return (HttpURLConnection) url.openConnection(proxy);
}
}

其次是实例化一个com.sun.jersey.client.urlconnection.URLConnectionHandler

URLConnectionClientHandler ch  = new URLConnectionClientHandler(new ConnectionFactory());

第三种是使用 Client 构造函数代替 Client.create:

Client client = new Client(ch);

当然你可以在ConnectionFactory中自定义Proxy的初始化。

关于java - 泽西客户端 + 设置代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com