2016-11-17 82 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中)。 –