gpt4 book ai didi

android - 使用 HttpGet 返回完整的 HTML 代码

转载 作者:行者123 更新时间:2023-11-29 14:54:23 26 4
gpt4 key购买 nike

我正在尝试调用一个私有(private) Web 服务,其中有一个链接我必须使用 GET 方法访问。在浏览器上使用直接 URL(需要先登录)时,我得到了 JSON 格式的数据。我调用的 URL 是这样的

 http://www.example.com/trip/details/860720?format=json

该 url 工作正常,但是当我使用 HttpGet 调用它时,我得到的是网页的 HTML 编码,而不是 JSON 字符串。我使用的代码如下:

private String runURL(String src,int id) {   //src="http://www.example.com/trip/details/"
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(src);
String responseBody="";
BasicHttpParams params=new BasicHttpParams();
params.setParameter("domain", token); //The access token I am getting after the Login
params.setParameter("format", "json");
params.setParameter("id", id);
try {
httpget.setParams(params);
HttpResponse response = httpclient.execute(httpget);
responseBody = EntityUtils.toString(response.getEntity());
Log.d("runURL", "response " + responseBody); //prints the complete HTML code of the web-page
} catch (Exception e) {
e.printStackTrace();
}
return responseBody;
}

你能告诉我我做错了什么吗??

最佳答案

尝试在您的 http header 中指定接受和内容类型:

httpget.setHeader("Accept", "application/json"); // or application/jsonrequest
httpget.setHeader("Content-Type", "application/json");

请注意,您可以使用 wireshark 等工具捕获并分析收入和结果 http 包,并找出从标准浏览器返回您的 json 响应的 http header 的确切样式。

更新:
你提到使用浏览器需要先登录,返回的html内容可能是登录页面(如果使用基本认证类型,它返回一个状态码为401的简短html响应,所以现代浏览器知道如何处理,更具体地说,弹出登录提示给用户),所以第一次尝试是检查你的 HTTP 响应的状态代码:

int responseStatusCode = response.getStatusLine().getStatusCode();

根据您使用的身份验证类型,您可能还需要在 http 请求中指定登录凭据,如下所示(如果它是基本身份验证):

httpClient.getCredentialsProvider().setCredentials(
new AuthScope("http://www.example.com/trip/details/860720?format=json", 80),
new UsernamePasswordCredentials("username", "password");

关于android - 使用 HttpGet 返回完整的 HTML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9805300/

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