- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过我电脑上的 Android 模拟器访问 RESTful 网络服务,它使用代理连接到互联网。
我的代码可以正常访问实际 Android 设备上的 Web 服务,该设备具有自己的数据连接,代码如下:
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
HttpGet request = new HttpGet("http://mytesturl.com/services/serviceName");
UsernamePasswordCredentials creds =
new UsernamePasswordCredentials("username", "password");
request.addHeader(BasicScheme.authenticate(creds, "UTF-8", false));
HttpResponse response = client.execute(request);
我尝试了多种方法来尝试让模拟器允许通过代理进行连接,但都没有奏效。
请注意,我确实在 AndroidManifest.xml 中启用了互联网:
<uses-permission android:name="android.permission.INTERNET" />
尝试 1 - 设置属性:
这会在 execute() 调用时为我的服务的 URL 产生一个 UnknownHostException
Properties props = System.getProperties();
props.put("http.proxyHost", "httpproxy.mycompany.com");
props.put("http.proxyPort", "80");
尝试 2 - 在 DefaultHttpClient 中设置代理:
这会为实际代理产生一个 UnknownHostException
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
HttpHost proxy = new HttpHost("httpproxy.mycompany.com", 80);
client.getCredentialsProvider().setCredentials(
new AuthScope("httpproxy.mycompany.com", 80),
new UsernamePasswordCredentials("username", "password"));
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
HttpGet request = new HttpGet("http://mytesturl.com/services/serviceName");
UsernamePasswordCredentials cred =
new UsernamePasswordCredentials("username", "password");
request.addHeader(BasicScheme.authenticate(cred, "UTF-8", false));
HttpResponse response = client.execute(request);
尝试 3 - 在 HttpGet 中设置代理
这会为我的 HttpGet 中的 URL 产生一个 UnknownHostException
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
HttpGet request = new HttpGet("http://mytesturl.com/services/serviceName");
UsernamePasswordCredentials cred =
new UsernamePasswordCredentials("username", "password");
request.addHeader(BasicScheme.authenticate(cred, "UTF-8", false));
Header bs = new BasicScheme().authenticate(
new UsernamePasswordCredentials("username", "password"),
request);
request.addHeader("Proxy-Authorization", bs.getValue());
HttpResponse response = client.execute(request);
我不确定还能尝试什么。我愿意接受任何建议。
最佳答案
遇到同样的问题,我在尝试 3(下面的代码)的变体中成功了,关键的区别在于 setProperty 语句。请注意,我调用的 Web 服务不需要身份验证,因此我只设置代理授权 header 。
System.setProperty("java.net.useSystemProxies", "false");
System.setProperty("http.proxyHost", "123.56.7.9");
System.setProperty("http.proxyPort", "8080");
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);
HttpGet request = new HttpGet("web service url");
Header bs = new BasicScheme().authenticate(
new UsernamePasswordCredentials("NETWORKID", "netpassword"),
request);
request.addHeader("Proxy-Authorization", bs.getValue());
HttpResponse response = client.execute(request);
关于java - Android Emulator 使用 HttpGet 通过代理访问 RESTful Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9623844/
公共(public)类 ServiceHandler { static String response = null; public final static int GET = 1; public
为什么在WebApi框架中使用HttpGet而不是HttpPost? 我很清楚 Post 或 Get 类型之间的区别,一个是通过 url,另一个不是(作为基本理解) 但我也知道主要区别(可以在服务器上
我正在尝试做一件非常简单的事情,几天前它还在工作。 CloseableHttpClient client = HttpClientBuilder.create().build();
我正在尝试从 html 编写此脚本,但无法得到结果,有什么问题吗? function httpGet() { var httpClient = util.newHttpClient(); v
我正在尝试从以下 URL 获取文本响应: http://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&dt=t&tk=2
我的 MainActivity.java 文件中有这个: public static void getLatestVersion() { try { Strin
我正在尝试使用 GET 将参数发送到脚本,但我收到此错误: java.lang.IllegalStateException: Target host must not be null, or set
我正在使用 Slim 框架通过 GET 方法在 Android 中执行 REST API。我对检索表的所有值没有任何问题,例如 cars。 当我尝试通过 id 访问 Car 的 name 时,问题就来
我正在努力通过查询字符串获取数据。我已经完成了 httppost,但我还没有尝试使用 httpget。但我不能。 List nameValuePairs = new ArrayList();
因此,我使用的是另一篇旧帖子中的以下代码,但其中一部分有问题,行:HttpGet request = new HttpGet(url); 不起作用。在 url 点我放了类似 www.stackover
是否可以在 HttpGet 中使用管道字符? 我有一个用竖线分隔的经纬度列表,例如53.42290885462988,-1.4404749870300293|53.39965626194152,-1.
我想从我的 Android 应用程序中执行 httpGet,但我没有得到任何响应,当我从浏览器中执行相同的 httpGet 时它起作用了。我还使用 chrome 扩展 Postman 来测试我发送的
我正在使用 RESTFul HttpGet 服务 导入org.apache.http.client.methods.HttpGet; 我创建了一个函数来查询另一台计算机上的服务。该调用工作正常,但是我
Startup.cs,样板: app.UseMvc(routes => { routes.MapRoute( name: "default", template
我希望能够将复杂类型作为我的 HttpGet 方法的参数进行处理。 当 api 方法不接受任何参数时,方法 pickNFirstElements 起作用,但当我尝试传递对象时不起作用。 我有一个想法,
让我先概括一下情况: 我有一个基本的 Controller ,如下所示: public class SearchRequestController : ApiController { publ
我正在用 Ruby 编写一些代码...但我无法弄清楚基本身份验证如何与 Crystal-lang 一起工作。 在 ruby 中,我必须始终使用 request.basic_auth 但这在 Cry
我正在开发 Uber API,并尝试使用 here 中的说明获取用户个人资料。 以下curl命令工作正常,可以从uber获取用户信息: curl -H "Authorization: Bearer Y
我正在使用 HttpGet 返回一个文件,并且 HttpGet 不允许参数是 URL,它必须是 URL,但是我面临的问题是我必须*使用 httpclient,并且我需要能够在 URI/URL 中放置特
这个问题已经有答案了: How can I fix 'android.os.NetworkOnMainThreadException'? (65 个回答) 已关闭10 年前。 我正在尝试向 http:
我是一名优秀的程序员,十分优秀!