2012-03-14 63 views
0

我想用一个Input xml在android中打一个Post请求并获取输出为xml。请告诉我在android java中实现这一点的方式。我已经在iPhone objective-c中做了这个。如何在android中打一个帖子请求?

在此先感谢

+0

您是否尝试过自己的任何代码,询问这里之前? – androidnoob 2012-03-14 06:07:09

+0

嗨,你有没有写入XML格式的输入,我的意思是你需要代码写入输入XML或不?告诉我很快 – 2012-03-14 06:08:45

+0

我需要发送一个XML作为输入并将XML作为输出 – 2012-03-14 06:10:46

回答

3

呼叫连接管理器类: 发送请求使用此代码:通网址和xml-REQ

   String url=" Enter URL Here" 
    ConnectionManager connectionManger = new ConnectionManager(url); 
     connectionManger.AddParam("xml_req", xml_req); 
     try { 
      response = connectionManger.sendRequest(RequestMethod.POST); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

连接管理器类:

import android.content.Context; 

import com.mutmonix.series.bo.RequestMethod; 

public class ConnectionManager { 
    private ArrayList <NameValuePair> params; 
    private ArrayList <NameValuePair> headers; 
    private String url; 

    public static Context context; 

    File tempDir; 

    public ConnectionManager(String url) { 
     this.url = url; 
     params = new ArrayList<NameValuePair>(); 
     headers = new ArrayList<NameValuePair>(); 
    } 

    public String sendRequest(RequestMethod method)throws Exception { 
     return callServer(method); 
    } 


    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 String callServer(RequestMethod method) throws Exception { 
      String xmlResponse = ""; 

      switch(method) { 
      case GET: 
      { 
       //add parameters 
       String combinedParams = ""; 
       if(!params.isEmpty()){ 
        combinedParams += "?"; 
        for(NameValuePair p : params) 
        { 
         String paramString = p.getName() + "=" + URLEncoder.encode(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()); 

       } 

       xmlResponse = executeRequest(request, url); 
       break; 
      } 
      case POST: 
      { 
       HttpPost request = new HttpPost(url); 


       //add headers 
       for(NameValuePair h : headers) 
       { 
        StringEntity entity = new StringEntity(h.getValue(), "UTF-8"); 
        request.setEntity(entity); 
        request.addHeader("Accept", "application/xml"); 
        request.addHeader("Content-Type", "application/xml"); 


       } 

       if(!params.isEmpty()){ 
        request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
       } 

       xmlResponse = executeRequest(request, url); 
       break; 
      } 
      case PUT: 
      { 
       HttpPut request = new HttpPut(url); 

       //add headers 
       for(NameValuePair h : headers) 
       { 
        StringEntity entity = new StringEntity(h.getValue(), "UTF-8");     
        request.setEntity(entity); 
        request.addHeader("Accept", "application/xml"); 
        request.addHeader("Content-Type", "application/xml"); 


       } 

       if(!params.isEmpty()){ 
        request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); 
       } 

       xmlResponse = executeRequest(request, url); 
       break; 
      } 

     } 
      return xmlResponse; 
     } 



      private String executeRequest(HttpUriRequest request, String url) throws Exception 
      { 
       //HttpClient client = new DefaultHttpClient(); 
       DefaultHttpClient client = new DefaultHttpClient(); 
       HttpParams params = client.getParams(); 

       // Set Connection TimeOut 
       HttpConnectionParams.setConnectionTimeout(params, 30000); 

       HttpResponse httpResponse; 
       String xmlResponse = "";   
       httpResponse = client.execute(request); 
       int responseCode = httpResponse.getStatusLine().getStatusCode(); 
       String message = httpResponse.getStatusLine().getReasonPhrase(); 
       HttpEntity entity = httpResponse.getEntity(); 
       if (entity != null) { 
        InputStream instream = entity.getContent(); 
        xmlResponse = convertStreamToString(instream); 

        // Closing the input stream will trigger connection release 
        instream.close(); 
       } 

       return xmlResponse;  
      } 

    private 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(); 
    } 
} 

请求类型分类:

public enum RequestMethod 
{ 
GET, 
POST, 
PUT 
} 
+0

这是为我工作......如果你遇到一些问题,不要让我知道我会相应地引导你 – 2012-03-14 06:30:15

相关问题