gpt4 book ai didi

android - com.android.volley.NoConnectionError - 带有 Charles Proxy 的 Android 模拟器

转载 作者:IT老高 更新时间:2023-10-28 23:36:09 33 4
gpt4 key购买 nike

我想为 Android 模拟器代理网络流量。

我似乎无法让它工作。

我的模拟器是用这个启动的:

emulator @Nexus_5X_API_23 -http-proxy 10.0.1.17:8888

IP 和端口指向 Charles 在帮助菜单中报告的内容。

已安装 SSL 证书。我可以打开模拟器浏览器,Charles 会向我显示所有流量。浏览器照常更新。

到目前为止,一切似乎都很好。

现在我尝试运行我的应用程序。我的第一个网络电话通过 Charles 成功发出。响应返回,Charles 显示它。但是响应没有成功传递给应用程序。

我在错误回调中设置了一个断点,我可以看到 com.android.volley.NoConnectionError 这是由 java.io.IOException: unexpected end of stream on连接

为什么 Charles 不将结果正确地传回应用程序?

我需要做the end of the configuration page on Charles 中定义的事情吗? ?

HttpHost httpproxy = new HttpHost("192.168.0.101", 8888, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);

这似乎不正确 - 我错过了什么?

最佳答案

为了帮助解决

java.io.IOException: unexpected end of stream on Connection

问题请回答评论中的问题。

关于

HttpHost httpproxy = new HttpHost("192.168.0.101", 8888, "http"); httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,httpproxy);

它不会像那样帮助你。事实上,这是应用代理的另一种方式,IMO 甚至比“-http-proxy”更好,因为您可以将它应用到任何地方,不仅适用于模拟器,而且仅适用于此应用程序构建。

您需要在您使用的 Http Stack 中应用代理。例如:

public class ProxyHurlStack extends HurlStack {

@Override
protected HttpURLConnection createConnection(URL url) throws IOException {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.1.17", 8888));
HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
return conn;
}
}

然后为您调试构建,您可以使用类似:

requestQueue = Volley.newRequestQueue(context, new ProxyHurlStack());

关于android - com.android.volley.NoConnectionError - 带有 Charles Proxy 的 Android 模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922338/

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