2013-08-12 17 views

Odpowiedz

87

Jeśli xml jest napisany przez java.lang.String można tylko przy użyciu HttpClient w ten sposób

public void post() throws Exception{ 
     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost("http://www.baidu.com"); 
     String xml = "<xml>xxxx</xml>"; 
     HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8")); 
     post.setEntity(entity); 
     HttpResponse response = client.execute(post); 
     String result = EntityUtils.toString(response.getEntity()); 
    } 

zwrócić uwagę na Wyjątki.

BTW, przykładem jest napisany przez httpclient wersji 4.x

+0

Sugerowałbym użyciu 'java .nio.charset.StandardCharsets' i zmodyfikuj linię 'ByteArrayEntity' na: HttpEntity entity = new ByteArrayEntity (xml.getBytes (StandardCharsets.UTF_8)); – MrMister

+0

Zamiast 'new ByteArrayEntity (xml.getBytes (" UTF-8 "));' użyj 'new StringEntity (xml, ContentType.APPLICATION_XML);' – Asaph

+0

Użycie nowej StringEntity może spowodować, że w nagłówku zostanie podany niepoprawny zestaw znaków. Używaj ostrożnie. –

20

Rozszerzenie kodu (przy założeniu, że XML chcesz wysłać jest w xmlString):

String xmlString = "</xml>"; 
DefaultHttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpRequest = new HttpPost(this.url); 
httpRequest.setHeader("Content-Type", "application/xml"); 
StringEntity xmlEntity = new StringEntity(xmlString); 
httpRequest.setEntity(xmlEntity); 
HttpResponse httpresponse = httpclient.execute(httppost); 
+0

Xml został napisany przez String :), ale też dziękuję! – Tata2

+0

Dzięki Santosh, Twoje rozwiązanie zadziałało w moim przypadku. –

+0

@javadoc, serdecznie zapraszamy. – Santosh