首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AndroidHttpClient到HttpUrlConnection的转换

从AndroidHttpClient到HttpUrlConnection的转换
EN

Stack Overflow用户
提问于 2014-09-07 04:35:58
回答 1查看 490关注 0票数 1

我编写了下面的代码,它工作得很好:

代码语言:javascript
复制
private static final String URL = "http://test.net/api/mobile/logininfo";
private AndroidHttpClient client = AndroidHttpClient.newInstance("");

HttpPost request = new HttpPost(URL);
request.addHeader("Content-Type", "application/json; charset=utf-8");
request.addHeader("Cookie", sessionId);

String username = "test";
String osVersion = android.os.Build.VERSION.RELEASE;

String params = "{\"username\":\"" + username
                        + "\",\"osVersion\":\"" + osVersion
                        + "\"}";

request.setEntity(new StringEntity(params));
HttpResponse response = client.execute(request);

String res = new BasicResponseHandler()
                        .handleResponse(response);
                JSONObject obj = (JSONObject) new JSONTokener(res).nextValue();

//do something with JSONObject

然而,当我阅读开发人员网络处理最佳实践(http://android-developers.blogspot.com/2011/09/androids-http-clients.html)时,我发现HttpURLConnection比AndroidHttpClient更好。

如何将代码转换为使用HttpURLConnection而不是AndroidHttpClient?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-07 07:31:34

我找到了解决办法。以下是HttpURLConnection的等效代码:

代码语言:javascript
复制
URL url = new URL("http://test.net/api/mobile/logininfo");
HttpURLConnection conn = (HttpURLConnection) url
        .openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Cookie", sessionId);
conn.setRequestProperty("Content-Type",
        "application/json; charset=utf-8");
conn.setRequestProperty("Expect", "100-continue");

String osVersion = android.os.Build.VERSION.RELEASE;

String params = "{\"username\":\"" + username
        + "\",\"osVersion\":\"" + osVersion
        + "\"}";

PrintWriter out = new PrintWriter(conn.getOutputStream());
out.println(params);
out.flush();

conn.connect();
int responseCode = conn.getResponseCode();

if (responseCode != 200)
        return null;

StringBuilder response = new StringBuilder();
        Scanner scanner = new Scanner(conn.getInputStream());
while (scanner.hasNext()) {
        response.append(scanner.nextLine());
}
scanner.close();

JSONObject obj = (JSONObject) new JSONTokener(
    response.toString()).nextValue();

//do something with JSONObject

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25707110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档