【问题标题】:updating from HttpClient to HttpURLConnection [duplicate]从 HttpClient 更新为 HttpURLConnection [重复]
【发布时间】:2015-05-23 03:58:16
【问题描述】:

我一直在开发一个 android 应用程序,最近使用 HttpClient 使所有登录代码都能正常工作。但是,此代码现已弃用,不再有效。语言摘要建议用HttpURLConnection 对象替换所有HttpClient 代码。我不知道该怎么做。如果有人可以帮助我将我的代码更改为HttpURLConnection 以提交登录表单并检索信息,将不胜感激。这是我原来的使用功能代码:

String u = params[0];
String p = params[1];
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS,Boolean.TRUE);
//client.setRedirectStrategy(new LaxRedirectStrategy());
HttpPost post = new HttpPost("https://home-access.cfisd.net/HomeAccess/Account/LogOn");
List<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("LogOnDetails.Username", u));
list.add(new BasicNameValuePair("LogOnDetails.Password",p));
list.add(new BasicNameValuePair("Database","10"));
HttpResponse response = null;
try{
    post.setEntity(new UrlEncodedFormEntity(list));
    response = client.execute(post);
}
catch(Exception ex)
{
    ex.printStackTrace();
}

【问题讨论】:

标签: java android forms httpclient httpurlconnection


【解决方案1】:

嘿兄弟,得到一个像

这样的图书馆

androids 的默认设置既旧又笨重

loopjs asynchttpclientokhttpKoushs ion

你用 2-3 行代码做了很多工作

loopjs 异步 http 示例

RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, responseHandler);

//do something with response
@Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {

        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONArray response) {

        }
    });

【讨论】:

    【解决方案2】:

    您可以获取连接的输出流并将参数查询字符串写入其中。

    URL url = new URL("http://yoururl.com");
    HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
    
    conn.setReadTimeout(10000);
    
    conn.setConnectTimeout(15000);
    
    conn.setRequestMethod("POST");
    
    conn.setDoInput(true);
    
    conn.setDoOutput(true);
    
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    
    params.add(new BasicNameValuePair("firstParam", paramValue1));
    
    params.add(new BasicNameValuePair("secondParam", paramValue2));
    
    params.add(new BasicNameValuePair("thirdParam", paramValue3));
    
    OutputStream os = conn.getOutputStream();
    
    BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(os, "UTF-8"));
    
    writer.write(getQuery(params));
    
    writer.flush();
    
    writer.close();
    
    os.close();
    
    conn.connect();
    

    ....

    private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
    {
    
        StringBuilder result = new StringBuilder();
    boolean first = true;
    
    for (NameValuePair pair : params)
    {
        if (first)
            first = false;
        else
            result.append("&");
    
        result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
    }
    
    return result.toString();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-03
      • 2015-11-14
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2018-03-30
      相关资源
      最近更新 更多