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

相关推荐

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    这可以通过多种方式实现,如使用SSL/TLS协议进行安全连接,或者在发送前使用AES、RSA等加密算法对XML字符串加密。如果使用了加密,服务器端需要解密接收到的数据。 在服务器端,通常会有一个HTTP服务监听并处理POST...

    C#使用Http Post方式传递Json数据字符串调用Web Service

    最后,我们可以将Url编码后的字符串参数写入到请求流中,并将其发送到服务端。 在实施过程中,我们可能会遇到一些问题,例如如何将Json数据字符串参数转换为键值对的形式,如何将Url编码后的字符串参数写入到请求流...

    java调用webservice传字符串参数.doc

    // 这里需要根据实际的SOAP请求格式构建XML字符串 // ... } } ``` 在这个例子中,`buildSoapRequest`方法需要构建一个符合SOAP协议的XML请求体,其中包含命名空间、方法名以及参数。 ### XFire方式 #### 1. ...

    WebApi系列-通过HttpClient来调用WebApi接口.doc

    这些参数通常出现在URL中,作为查询字符串的一部分。 示例: ```csharp public IHttpActionResult Get(int id) ``` ##### 3.2 POST方式 POST方法用于向服务器发送数据。在Web API中,POST方法一般只接受一个参数,...

    Java访问.Net Webservice 通过httpclient SOAP实现

    例如,如果我们有一个名为`GetGreeting`的方法,接受一个字符串参数`name`,那么SOAP请求可能如下所示: ```xml &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:asp=...

    JAVA调用HTTP及httpclient的详细说明

    // 拼凑get请求的URL字符串,并对特殊和不可见字符进行编码 String getURL = GET_URL + "?username=" + URLEncoder.encode("fatman", "UTF-8"); URL getUrl = new URL(getURL); // 打开连接,URL.open...

    http over xml的实例

    1. **HttpXmlServer**:服务器端会使用XStream将Java对象转换为XML字符串,然后通过HttpClient发送给客户端。可能还会包含监听特定端口,接收客户端请求,以及处理和响应HTTP请求的逻辑。 2. **HttpXmlClient**:...

    HttpClient组件及其在Android开发中的应用探讨.pdf

    服务端通常会有一个处理此类请求的网页(如getNews.jsp),它根据用户名和时间点查询公告,并将结果以字符串形式返回。客户端收到响应后,解析字符串,展示给用户。 在Android中使用HttpClient时,需要注意Android...

    使用Http post的方式调用webservice

    如果服务端期望XML,你需要创建一个DOM文档,序列化为字符串;对于JSON,可以使用如Jackson或Gson库将对象转换为JSON字符串。在上面的示例中,`payload`变量应替换为实际的XML或JSON数据。 3. **处理响应** 获取...

    (正式)Java之JUnit, Log4J, Ant, HttpClient, ApacheCommons

    这些类库涵盖了字符串处理、集合操作、IO流、数学计算等多个方面,极大地提高了开发效率。 【压缩包子文件的文件名称列表】中的"ant-test"可能是指一个使用Ant进行构建和测试的示例项目。这个项目可能包含了一个或...

    httpclient API文档

    `NameValuePair`或`BasicNameValuePair`用于构建请求的查询字符串或POST数据。 5. **响应处理** `HttpResponse`对象包含了HTTP响应的状态码、头部和实体。通过`EntityUtils`可以获取响应实体的内容,如文本、XML或...

    APP微信支付Java服务端构建完整步骤

    例如,如果参数为`{"appid":"wx123456","mch_id":"1234567890","nonce_str":"abcdefg"}`,那么生成的签名字符串将为`appid=wx123456&mch_id=1234567890&nonce_str=abcdefg`,再加上`key`值后使用MD5加密得到签名。...

    android客户端与servlet服务端交互的很好的例子

    - 示例可能会展示如何读取`InputStream`,将响应内容转换为字符串,以及如何解析XML响应。 9. **异步请求与回调**: - 为了避免阻塞UI线程,通常在Android中使用异步请求。这可以通过`AsyncTask`、`Handler`、`...

    利用c#调用服务—将excel导成dataset

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发...// 序列化DataSet为XML字符串 string xmlData = dataSet.GetXml(); // 创建HttpClient对象 HttpClient httpClient = new HttpClient(); // 发送POST请求 ...

    Labview创建webservice与C#进行简单的http通信(post,get)

    例如,LabVIEW的数值可能需要转换为JSON字符串,再由C#解析。 - XML是一种常见的跨平台数据交换格式,也可以用于LabVIEW Web服务和C#客户端之间的通信。 通过上述步骤,我们可以实现LabVIEW创建的Web服务与C#...

    android使用JSON进行网络数据交换(服务端、客户端)的实现.rar

    Gson是由Google提供的库,可以直接将Java对象转换为JSON字符串,反之亦然。Jackson则是一个高性能的库,支持XML、JSON等多种数据格式的序列化和反序列化。 3. Android网络请求: 客户端与服务器通信通常使用HTTP或...

    WebServiceDemo

    6. **数据序列化与反序列化**:在发送请求前,需要将Java对象序列化为SOAP请求或JSON字符串;收到响应后,再将数据反序列化回Java对象。Gson、Jackson或org.json库可以帮助完成这些任务。 7. **错误处理**:考虑到...

    Android 4.0 网络编程详解代码(共7个项目)

    - XML的生成,如使用StringBuilder或DOM来构建XML字符串。 4. **第4章:Android中的HTTP通信与Web服务调用(假设存在,但未在列表中)** - HttpURLConnection和HttpClient两种API的使用。 - GET和POST请求的实现...

    c# http接口设计及调用demo

    - **序列化与反序列化**:使用`System.Text.Json`或`Newtonsoft.Json`库将对象转换为JSON字符串,或将接收到的JSON字符串转换回对象。 - **错误处理**:检查`HttpResponseMessage.IsSuccessStatusCode`判断请求...

    android使用JSON进行网络数据交换(服务端、客户端)的实现-IT计算机-毕业设计.zip

    可以使用`JSONObject`和`JSONArray`类来解析基本类型,或者使用Gson库自动将JSON字符串映射到Java对象。 7. Retrofit库:Retrofit是一个流行的网络请求库,它简化了网络请求的流程,支持注解定义接口,自动转换JSON...

Global site tag (gtag.js) - Google Analytics