2016-11-17 84 views
0

我需要用java的請求格式是生成HTTP POST請求以下如何生成一個HTTP POST請求,並使用Java

<request version="3.9" principal="c1Prov" credentials="c1Prov"> 
    <target name="UserAPI" operation="createUser"> 
     <parameter> 
     <user> 
     <name><SUBSCRIBER_ID></name> 
     <login-name><SUBSCRIBER_LOGIN_ID></login-name> 
      <password> 
     <value><SUBSCRIBER_PASSWORD></value> 
     </password> 
      <organization> 
     <qualified-name>/BTCL_FIXED/<WHOLESALE_ORG_NAME></qualified-name> 
     </organization> 
     <account><name><SUBSCRIBER_ACCOUNT></name></account> 
     <profile-set> 
     <qualified-name>/BTCL_FIXED/<FIXED_PROFILE_SET_NAME></qualified-name> 
     </profile-set> 
      </user> 
     </parameter> 
     </target> 
     </request> 

我想下面的代碼,但它不發送前打印請求打印什麼。 1.我正確的做法嗎? 2.爲什麼不打印任何東西?

HttpClient httpClient = new HttpClient(); 
    HttpPost post = new HttpPost("http://www.baidu.com"); 
    String xml = "<target name=\"DomainAPI\" operation=\"createDomain\"><parameter><domain><name><DOMAIN_NAME></name><owning-organization><qualified-name>/BTCL_FIXED</qualified-name></owning-organization><profile-set><qualified-name>/BTCL_FIXED/Wholesale Fixed Dom PS</qualified-name><type>domain</type></profile-set></domain></parameter></target>"; 
    HttpEntity entity = new ByteArrayEntity(xml.getBytes("UTF-8")); 
    post.setEntity(entity); 
    System.out.println(post.Entity()); 

回答

1

entity = post.getEntity().getContent() - 您將得到一個實體的InputStream。從它 獲得一個字符串:

String str = EntityUtils.toString(entity); 

使用StringEntity代替ByteArrayEntity的:

new StringEntity(xml, Charset.defaultCharset()) 
+0

感謝Michel_T,它幫助。我在上面粘貼的xml部分中的其他問題,是否所有內容都應該是請求實體的一部分?這是我第一次使用xml over htttp工作,所以不清楚xml的哪一部分應該放在header中,哪些應該放到ENtity中。 – shaiksha

+0

是的,你是對的 - 你的XML數據應該在請求的主體中(在Entity中)。 –