2016-07-21 27 views
0

我想檢索通過HTTP Put方法傳遞的XML實體。我用下面的代碼,獲取傳遞到主體中的XML實體 - Android中的HTTP Put方法

DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
conn.bind(serverSocket.accept(), new BasicHttpParams()); 
HttpRequest request = conn.receiveRequestHeader(); 
conn.receiveRequestEntity((HttpEntityEnclosingRequest)request); 
HttpEntity entity = ((HttpEntityEnclosingRequest)request).getEntity(); 
System.out.println(EntityUtils.toString(entity)); 

我能得到諾瑪字符串,而是試圖通過XML實體的時候,我甚至不能看到打印語句。

回答

0

我希望這段代碼能幫到你。

HttpPost httppost = new HttpPost(SERVICE_EPR);   
StringEntity se = new StringEntity(SOAPRequestXML,HTTP.UTF_8); 

se.setContentType("text/xml"); 
httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8"); 
httppost.setEntity(se); 

HttpClient httpclient = new DefaultHttpClient(); 
BasicHttpResponse httpResponse = 
(BasicHttpResponse) httpclient.execute(httppost); 

response.put("HTTPStatus",httpResponse.getStatusLine().toString()); 
+0

我不想送request..the實體正被其他的服務器通過......我只是想消費,在我的應用程序。 – dreamdeveloper

0

PFB的解決方案,

DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
params = new BasicHttpParams(); 
conn.bind(socket, params); 

//Extracting the information from the requested URI 
HttpRequest request = conn.receiveRequestHeader(); 
conn.receiveRequestEntity((HttpEntityEnclosingRequest)request); 
HttpEntity httpEntity = ((HttpEntityEnclosingRequest)request).getEntity(); 

if(httpEntity != null){ 
    InputStream instream = httpEntity.getContent(); 
    try { 
    // do something useful 
    String myString = IOUtils.toString(instream, "UTF-8"); 
    Log.e(TAG,">>>> http body > "+myString); 
} finally { 
    instream.close(); 
} 

}

不要使用您接收到的數據把任何記錄或打印語句,我得到 '已經消耗內容' 異常。我曾使用我收到的httpEntity使用了多個日誌,這對我造成了問題。我評論這些(標記爲黃色)並開始工作。

PF Apache的文檔以供參考,

http://hc.apache.org/httpcomponents-core-ga/tutorial/pdf/httpcore-tutorial.pdf

相關問題