栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Java for Android的HTTP API请求

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java for Android的HTTP API请求

您应该能够在Android中使用HttpClient来完成所需的工作。我刚刚完成了将Android与ASP.NET MVC 3站点集成的第一部分,我必须说-
这非常轻松。我使用Json作为数据交换格式。

您可以在建立请求后通过设置调试点来准确查看标头的外观。这是一些示例代码(请记住,这只是示例代码-并非完整的实现)。

此类由不同于UI线程的单独线程调用:

public class RemoteDBAdapter {    public String register(String email, String password) throws Exception    {        RestClient c = new RestClient("http://myurl/Account/Register");        c.AddHeader("Accept", "application/json");        c.AddHeader("Content-type", "application/json");        c.AddParam("Email", email);        c.AddParam("Password", password);        c.Execute(RequestMethod.POST);        JSonObject key = new JSonObject(c.getResponse());        return key.getString("status");    }}

使用此类来构建您的请求并执行它:

public class RestClient {    public enum RequestMethod {        GET,        POST    }    private ArrayList <NamevaluePair> params;    private ArrayList <NamevaluePair> headers;    private String url;    private int responseCode;    private String message;    private String response;    public String getResponse() {        return response;    }    public String getErrorMessage() {        return message;    }    public int getResponseCode() {        return responseCode;    }    public RestClient(String url)    {        this.url = url;        params = new ArrayList<NamevaluePair>();        headers = new ArrayList<NamevaluePair>();    }    public void AddParam(String name, String value)    {        params.add(new BasicNamevaluePair(name, value));    }    public void AddHeader(String name, String value)    {        headers.add(new BasicNamevaluePair(name, value));    }    public void Execute(RequestMethod method) throws Exception    {        switch(method) { case GET: {     //add parameters     String combinedParams = "";     if(!params.isEmpty()){         combinedParams += "?";         for(NamevaluePair p : params)         {  String paramString = p.getName() + "=" + URLEnprer.enpre(p.getValue(),"UTF-8");  if(combinedParams.length() > 1)  {      combinedParams  +=  "&" + paramString;  }  else  {      combinedParams += paramString;  }         }     }     HttpGet request = new HttpGet(url + combinedParams);     //add headers     for(NamevaluePair h : headers)     {         request.addHeader(h.getName(), h.getValue());     }     executeRequest(request, url);     break; } case POST: {     HttpPost request = new HttpPost(url);     //add headers     for(NamevaluePair h : headers)     {         request.addHeader(h.getName(), h.getValue());     }     JSonObject jo = new JSonObject();     if(!params.isEmpty()){         for (int i = 0; i < params.size();i++)         {  jo.put(params.get(i).getName(),params.get(i).getValue());         }         StringEntity se = new StringEntity(jo.toString());         se.setContentType("text/xml");          se.setContentEncoding( new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));         request.setEntity(se);         //request.setEntity(new UrlEnpredFormEntity(params, HTTP.UTF_8));     }     executeRequest(request, url);     break; }        }    }    private void executeRequest(HttpUriRequest request, String url)    {        //HttpClient client = new DefaultHttpClient();        HttpClient client = HttpClientFactory.getThreadSafeClient();        HttpResponse httpResponse;        try { httpResponse = client.execute(request); responseCode = httpResponse.getStatusLine().getStatusCode(); message = httpResponse.getStatusLine().getReasonPhrase(); HttpEntity entity = httpResponse.getEntity(); if (entity != null) {     InputStream instream = entity.getContent();     response = convertStreamToString(instream);     // Closing the input stream will trigger connection release     instream.close(); }        } catch (ClientProtocolException e)  { client.getConnectionManager().shutdown(); e.printStackTrace();        } catch (IOException e) { client.getConnectionManager().shutdown(); e.printStackTrace();        }    }    private static String convertStreamToString(InputStream is) {        BufferedReader reader = new BufferedReader(new InputStreamReader(is));        StringBuilder sb = new StringBuilder();        String line = null;        try { while ((line = reader.readLine()) != null) {     sb.append(line + "n"); }        } catch (IOException e) { e.printStackTrace();        } finally { try {     is.close(); } catch (IOException e) {     e.printStackTrace(); }        }        return sb.toString();    }}

编辑:

哦,还有HttpClientFactory:

// Should be thread safepublic class HttpClientFactory { private static DefaultHttpClient client; public synchronized static DefaultHttpClient getThreadSafeClient() {         if (client != null)      return client;         client = new DefaultHttpClient();         ClientConnectionManager mgr = client.getConnectionManager();         HttpParams params = client.getParams();         client = new DefaultHttpClient(new ThreadSafeClientConnManager(params,   mgr.getSchemeRegistry()), params);     return client; }    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463559.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号