ChannelDistributor.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<request>
<userName>yisou</userName>
<pwd>abcd1234</pwd>
<channelCode>10010000</channelCode>
<insertType>00</insertType>
</request>
1).HttpClient发送Post请求,内容格式为xml,并获取响应内容
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.log4j.Logger;
public class ServiceValidate extends HttpServlet{
private Logger log = Logger.getLogger(ServiceValidate.class);
private static final long serialVersionUID = -6995391540735187530L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
/**
* 发送xml数据请求到服务器端
* @param url xml请求数据地址
* @param xmlString 发送的xml数据流
* @return null发送失败,否则返回响应内容
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", "true");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", "stdout");
String url = "http://localhost:8080/game/testServlet";
String xmlString = getXmlString();
HttpClient client = new HttpClient();
PostMethod myPost = new PostMethod(url);
client.getParams().setSoTimeout(300*1000);
String responseString = null;
try{
myPost.setRequestEntity(new StringRequestEntity(xmlString,"text/xml","utf-8"));
int statusCode = client.executeMethod(myPost);
if(statusCode == HttpStatus.SC_OK){
BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream());
byte[] bytes = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int count = 0;
while((count = bis.read(bytes))!= -1){
bos.write(bytes, 0, count);
}
byte[] strByte = bos.toByteArray();
responseString = new String(strByte,0,strByte.length,"utf-8");
bos.close();
bis.close();
}
}catch (Exception e) {
log.error(e.getMessage(), e);
}
myPost.releaseConnection();
client.getHttpConnectionManager().closeIdleConnections(0);
System.out.println("responseString:"+responseString);
}
/**
* 读取xml内容,将请求的xml
* 保存成字符串 进行post发送
* @return
*/
private String getXmlString() {
StringBuilder sb=new StringBuilder();
try {
InputStream inputStream =ServiceValidate.class.getResourceAsStream("/ChannelDistributor.xml");
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
String line="";
for(line=br.readLine();line!=null;line=br.readLine()) {
sb.append(line+"\n");
}
} catch (FileNotFoundException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
return sb.toString();
}
@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
}
2).获取HttpClient Post请求数据并响应内容
import org.apache.log4j.Logger;
public class TestServlet extends HttpServlet{
private static final long serialVersionUID = -6175353394519367540L;
private Logger log = Logger.getLogger(TestServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
int len = request.getContentLength();
System.out.println("数据流长度:" +len);
//获取HTTP请求的输入流
InputStream is = request.getInputStream();
//已HTTP请求输入流建立一个BufferedReader对象
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//读取HTTP请求内容
String buffer = null;
StringBuffer sb = new StringBuffer();
while ((buffer = br.readLine()) != null) {
//在页面中显示读取到的请求参数
sb.append(buffer+"\n");
}
System.out.println("接收post发送数据:\n"+sb.toString().trim());
PrintWriter out = response.getWriter();
StringBuffer stringBuffer = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
stringBuffer.append("<response>");
stringBuffer.append("<status>800</status>");
stringBuffer.append("<tokenPwd>jkuiowerncxuidafjkfdaouifdaljkn</tokenPwd>");
stringBuffer.append("</response>");
out.write(stringBuffer.toString());
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
控制台输出如下:
数据流长度:175
接收post发送数据:
<?xml version="1.0" encoding="UTF-8"?>
<request>
<userName>yisou</userName>
<pwd>abcd1234</pwd>
<channelCode>10010000</channelCode>
<insertType>00</insertType>
</request>
responseString:<?xml version="1.0" encoding="UTF-8"?><response><status>800</status><tokenPwd>jkuiowerncxuidafjkfdaouifdaljkn</tokenPwd></response>
相关推荐
在IT领域,特别是Web开发与服务交互中,发送POST请求并处理XML格式的数据是一项常见的需求。根据提供的文件信息,我们可以深入解析如何使用Java语言通过Apache HttpClient库来实现这一功能。 ### 发送POST请求并...
### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...
接下来,我们将探讨如何使用HTTPClient发送POST请求并附带JSON数据。首先,你需要创建一个`CloseableHttpClient`实例,然后使用`HttpPost`对象来指定请求URL。在POST请求中,我们将使用`EntityBuilder`来构建包含...
最后,我们需要使用HttpClient发送POST请求。首先,创建一个`CloseableHttpClient`实例,然后构建一个`HttpPost`对象,指定请求的URL。接着,设置`HttpPost`的实体为之前创建的`InputStreamEntity`,并执行请求: `...
代码中,`HttpGet`类用于创建GET请求,`HttpClients.createDefault()`创建HttpClient实例,`execute`方法执行请求并获取响应,`EntityUtils.toString`方法将响应实体转换为字符串。 三、POST请求的实现 POST请求常...
在这个主题中,我们将专注于如何使用HttpClient发送POST请求并传输JSON数据。在实际的Web服务开发和API调用中,这是一个非常常见的需求。 首先,理解POST请求:与GET请求不同,POST请求通常用于向服务器发送数据,...
这里我们详细探讨一下如何使用`HttpClient`发送POST请求,以及这个过程中的关键知识点。 首先,我们创建一个`CloseableHttpClient`对象,这相当于在编程环境中模拟了一个浏览器。`HttpClients.createDefault()`方法...
在处理响应时,我们通常会检查状态码,然后读取响应内容。例如,你可以使用EntityUtils将响应体转换为字符串: ```java HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString...
以下是一个示例,展示了如何构建XML内容并作为POST请求的一部分: ```java String xmlData = "<request><param1>value1</param1><param2>value2</param2></request>"; HttpPost httpPost = new HttpPost(...
// 处理响应,如获取响应体、状态码等 String responseBody = postMethod.getResponseBodyAsString(); System.out.println("Response: " + responseBody); // 释放连接资源 postMethod.releaseConnection(); ...
HttpClient是Java中用于执行HTTP请求的一个强大库,它提供了丰富的功能,可以方便地进行GET、POST请求,并且能够处理复杂的网络交互,包括发送文件等操作。下面我们将详细讨论HttpClientUtil工具类如何实现这些功能...
这段代码创建了一个HttpClient实例,发送一个GET请求到指定的URL,然后读取并返回响应的内容。 **POST请求示例:** ```csharp public async Task<string> SendHttpPostRequest(string url, string postData) { ...
如果需要发送POST请求,可以使用`HttpPost`类,并设置请求体。例如,向服务器发送JSON数据: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import ...
发送XML报文通常涉及到POST或GET请求,这里以POST请求为例,因为POST更适合发送大量数据,如XML文档。 1. **创建XML文档** 在发送XML之前,我们需要先构建XML文档。可以使用DOM(Document Object Model)或者SAX...
本文主要讨论如何使用HttpClient发送JSON格式和普通参数类型的POST请求。首先,我们来看一下所需的Maven依赖。 ```xml <groupId>commons-httpclient <artifactId>commons-httpclient <version>3.1 <groupId>...
GET请求的基本流程是创建HttpClient对象,构建HttpGet对象,然后通过HttpClient执行请求并获取响应。以下是一个简单的示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ...
因为我们是发送POST请求,所以需要设置请求方法为POST: ```java connection.setRequestMethod("POST"); ``` 3. **设置请求属性** 通常,POST请求需要设置Content-Type,表明我们要发送的数据类型: ```...
3. **发送请求并获取响应**:使用HttpClient执行HTTP请求,处理返回的响应,并从中提取有用的信息。 #### 四、代码示例分析 以下是对给定示例代码的详细分析: ```java /** * 访问服务 * @param wsdl wsdl地址 ...
本文将详细介绍一个基于`HttpClient`的工具类,它能够帮助开发者轻松地发送GET和POST请求,并支持XML及JSON格式的数据传输。 #### 工具类概述 该工具类名为`HttpClientUtil`,位于包`com.taotao.utils`中。主要...