相关疑难解决方法(0)

使用MonoTouch,HttpClient和Charles Proxy时出现HTTP流量监控问题

我是HttpClient类的新手,我遇到使用Charles Proxy监视请求的问题.基本上我需要的是监视从模拟器或实际iOS设备发出的请求.在这里,您可以找到有关如何配置Charles for iOS开发的精彩教程.我正在制作简单的HttpClient请求,只是一个简单的授权

async Task<string>  authorizeUser()
        {
            HttpClient _client = new HttpClient ();
            _client.BaseAddress = new Uri("https://...../api/");
            _client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue ("bearer", token);
            var content = new FormUrlEncodedContent(new[] 
                {
                    new KeyValuePair<string, string>("grant_type", "password"),
                    new KeyValuePair<string, string>("username", "theUserName"),
                    new KeyValuePair<string, string>("password", "thePassword")
                });
            var result = await _client.PostAsync("auth", content);
            string resultContent = result.Content.ReadAsStringAsync().Result;
            return resultContent;
        }
Run Code Online (Sandbox Code Playgroud)

代码有效,用户正在被授权,并且正在返回承载令牌.但是问题是,我在模拟器上的请求没有出现在Charles http流量监控列表中.

我想也许,这是因为我正在使用模拟器,但事实并非如此.我尝试打开野生动物园并浏览了一些网页,流量立刻出现了.所以问题不在于模拟器.

我也尝试在设备上安装,同样的故事,当使用HttpClient时,流量监控屏幕保持静音,但是一旦我打开浏览器,交通屏幕开始摇摆并篡夺所有请求.

我想可能是因为我使用HTTPS,尽管在任何情况下都应该捕获请求头,即使正文是编码的.但事实并非如此,我尝试在我的设备Safari上打开一些HTTPS站点,然后流量再次出现在我的Charles屏幕上.

我做的下一件事我下载了monotouch HttpClient示例.好消息是有几种发送请求的方法,实际上有四种方法 - 1. http WebRequest,2.https WebRequest,3.http NSUrlConnection,4.HttpClient.

我尝试了所有这些,你可能会猜到前三个完全出现在查尔斯,但最后一个HttpClient再次我不知道为什么没有出现在交通日志屏幕上.

所以我100%确定问题是HttpClient类,我不知道为什么尽管它正常工作,即发送/接收请求,但是这个类的请求无法被Charles捕获.

并排除这个问题的最后一个可能原因,那可能是问题在于Charles,我也尝试在Windows上使用Fiddler,它在我的Mac上作为虚拟机运行(在这里你可以找到如何做到这一点),重复了同样的故事 …

https xamarin.ios ios dotnet-httpclient charles-proxy

7
推荐指数
1
解决办法
2599
查看次数

如何在Java中的HttpClient请求上设置代理主机

我想HttpClient在对URL 发送请求之前设置代理。因为我可以连接curl命令来设置代理,但是使用Java代码却无法做到这一点。

卷曲命令:

**curl -I -x IP:80  URL**
Run Code Online (Sandbox Code Playgroud)

在Java文件中完成代码更改:

HttpClient client = new HttpClient();
System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
EntityEnclosingMethod method = new PostMethod(url);
method.setRequestEntity(new StringRequestEntity(requestXML, "text/xml", "utf-8"));
Run Code Online (Sandbox Code Playgroud)

通过上述代码在我的java文件中的更改,我得到以下错误:

java.net.ConnectException: Connection refused (Connection refused)
Run Code Online (Sandbox Code Playgroud)

这表明我无法将该URL与尝试用于连接URL的代理连接。

java http

6
推荐指数
3
解决办法
2万
查看次数

标签 统计

charles-proxy ×1

dotnet-httpclient ×1

http ×1

https ×1

ios ×1

java ×1

xamarin.ios ×1