0 0

HttpClient向服务端Post xml字符串5

要实现一个客户端向服务端post 一端xml数据的功能,

我就是想传一字符串xml给服务端.

客户端用Apache的HttpClient,大致代码如下

public class Test {
	public static void main(String[] args) throws IOException {

String data = "<root><header><type>fetch</type></header><content><program>test</program></content></root>";
String url = "http://localhost:8080/fetch";

HttpClient httpclient = new HttpClient();
		PostMethod post  = new PostMethod(url);
		String info = null;
		try {
			RequestEntity entity = new StringRequestEntity(data, "text/xml",
			"iso-8859-1");
			post.setRequestEntity(entity);
			httpclient.executeMethod(post); 
			int code = post.getStatusCode();
			if (code == HttpStatus.SC_OK)
				info = new String(post.getResponseBodyAsString());
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			post.releaseConnection();
		}
}

因为post.setRequestBody已经废弃,所以用了post.setRequestEntity().

服务端用request.getParameter("program");
取参数,得到null;

谁给指点一下为什么取不到值,或者怎么样可以post xml字符串

问题补充:
能否讲具体一点
问题补充:
1.我想直接Post整个xml 字符串过去.
然后服务端取xml中的参数,现在这样却取不到,我想知道为什么.
还有,不用NameValuePair不行嘛

2.我用PostMethod.setRequestBody(),它却提示"The method setRequestBody(String) from the type EntityEnclosingMethod is
deprecated",不解
问题补充:
有点郁闷,这个问题搞了好几个小时了,就想不通,
以字符串形式发送XML是最常见的方式,
服务端request.getParameter()也是最普通的方式.

发送Xml字符串,那服务端用request.getParameter还取不到了,非得用他设计的NameValuePair不行? 或者服务端就要改代码?

开源项目不是给人提供方便吗,非要让人用的这么别扭
2009年1月15日 14:15

5个答案 按时间排序 按投票排序

0 0

采纳的答案

NameValuePair. 这个才是Post处理的名称/数值; 提交到后台的;

如果用你说的
或许这样可以;我没试验过.


data = "program="+data;
RequestEntity entity = new StringRequestEntity(data, "text/xml",   "iso-8859-1");   
post.setRequestEntity(entity);   



2009年1月15日 15:35
0 0

我也很关注,继续等待;
结合实例:

比如说获取163邮箱的通讯列表,登录后,最后一步,应该是POST一個
<?xml version=\"1.0\"?><object><array name=\"items\"><object><string name=\"func\">pab:searchContacts</string><object name=\"var\"><array name=\"order\"><object><string name=\"field\">FN</string><boolean name=\"ignoreCase\">true</boolean></object></array></object></object><object><string name=\"func\">user:getSignatures</string></object><object><string name=\"func\">pab:getAllGroups</string></object></array></object>
的字符串!

2009年1月15日 16:37
0 0


EntityEnclosingMethod

setRequestBody(String body)

Deprecared了.但PostMethod并没有.

2009年1月15日 15:02
0 0

如果你想在某个字段中传递XML字符串;
你上面的代码要修改成:

NameValuePair[] data = { 
new NameValuePair("program", data), 
}; 
postMethod.setRequestBody(data); 


如果是整个提交XML访问的话,类似你的方式就可以了.

2009年1月15日 15:00
0 0

3里面,还没Deprecared吧?

2009年1月15日 14:28

相关推荐

Global site tag (gtag.js) - Google Analytics