java实现http请求post报文格式xml,报文头设置expect参数,并设置报文长度
时间: 2024-04-07 10:29:57 浏览: 125
Linux expect实现自动登录脚本实例代码
好的,可以参考下面的Java代码实现:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpPostXml {
public static void main(String[] args) throws Exception {
String url = "http://example.com/api";
String xml = "<xml><name>John</name><age>30</age></xml>";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// 设置请求方法
con.setRequestMethod("POST");
// 设置Expect头部信息
con.setRequestProperty("Expect", "100-continue");
// 设置请求内容类型
con.setRequestProperty("Content-Type", "application/xml");
// 设置请求内容长度
con.setRequestProperty("Content-Length", String.valueOf(xml.length()));
// 开启输出流
con.setDoOutput(true);
// 发送请求
OutputStream os = con.getOutputStream();
os.write(xml.getBytes());
os.flush();
os.close();
// 获取响应内容
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// 打印响应结果
System.out.println(response.toString());
}
}
```
在这个例子中,我们首先设置了请求的URL和XML内容。然后通过URL对象创建了一个HttpURLConnection连接对象。接下来,我们设置了请求方法为POST,设置了Expect头部信息,设置了请求内容类型为application/xml,设置了请求内容长度。然后开启输出流,并发送了请求。最后,我们获取了响应内容并打印出来。
需要注意的是,如果XML内容比较大,我们可以使用OutputStream的write(byte[] b, int off, int len)方法进行分段发送,这样可以避免一次性发送过大的数据造成内存溢出的问题。
阅读全文