2010-06-14 164 views
8

我打算創建適用於CommuniGate Pro服務器的移動應用程序。如何發送HTTP POST請求並接收響應?

例如,我需要做下面的Android客戶端C - CGP服務器S交談,並得到XIMSS.nonce節點值:

C:GET /ximsslogin/ HTTP/1.1 
    Host: myserver.com 
    Content-Type: text/xml 
    Content-Length: 42 

    <XIMSS><listFeatures id="list" /><XIMSS> 

S:HTTP/1.1 200 OK 
    Content-Length: 231 
    Connection: keep-alive 
    Content-Type: text/xml;charset=utf-8 
    Server: CommuniGatePro/5.3 

    <XIMSS><nonce>2C3E575E5498CE63574D40F18D00C873</nonce><language>german</language><response id="s"/></XIMSS> 

例如,在ActionScript 3.0,它看起來是這樣的:

var loader:Loader = new Loader(); 
loader.addEventListener(Event.COMPLETE, completeHandler); 
var urlRequest:URLRequest = new URLRequest(...); 
urlRequest.method = ...; 
urlRequest.data = ...; 
loader.load(urlRequest); 

private function completeHandler(...):void { ... }; 

它如何在Java中看Android 2.1

+0

我相信你會需要更詳細地說明,以獲得任何有意義的援助。 – 2010-06-14 15:19:31

回答

18

正如Schnapple所說,你的問題看起來很寬泛,並且讓人難以理解。

下面是一些通用代碼,用於發送HTTP POST並從服務器獲取響應,儘管這可能會有所幫助。


public String postPage(String url, File data, boolean returnAddr) { 

    ret = null; 

    httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109); 

    httpPost = new HttpPost(url); 
    response = null; 

    FileEntity tmp = null;  

    tmp = new FileEntity(data,"UTF-8"); 

    httpPost.setEntity(tmp); 

    try { 
     response = httpClient.execute(httpPost,localContext); 
    } catch (ClientProtocolException e) { 
     System.out.println("HTTPHelp : ClientProtocolException : "+e); 
    } catch (IOException e) { 
     System.out.println("HTTPHelp : IOException : "+e); 
    } 
      ret = response.getStatusLine().toString(); 

      return ret; 
} 
+0

當我使用這種方法時,我從我的服務器得到的響應是「圖像未提供」。如何解決這個問題? – includeMe 2011-03-31 09:44:03