String defURL = "http://bd.basdoc.com/rest/data/transfer";
URL url = new URL(defURL);
// 打开和URL之间的连接
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("POST");//请求post方式
con.setUseCaches(false); // Post请求不能使用缓存
con.setDoInput(true);// 设置是否从HttpURLConnection输入,默认值为 true
con.setDoOutput(true);// 设置是否使用HttpURLConnection进行输出,默认值为 false
//设置header内的参数 connection.setRequestProperty("健, "值");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("isTree", "true");
con.setRequestProperty("isLastPage", "true");
//设置body内的参数,put到JSONObject中
JSONObject param = new JSONObject();
param.put("sysId", "diwork");
param.put("tenantId", tenantId);
// 建立实际的连接
con.connect();
// 得到请求的输出流对象
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream(),"UTF-8");
writer.write(param.toString());
writer.flush();
// 获取服务端响应,通过输入流来读取URL的响应
InputStream is = con.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sbf = new StringBuffer();
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
reader.close();
// 关闭连接
con.disconnect();
// 打印读到的响应结果
System.out.println("运行结束:"+sbf.toString());
@Testpublic void testByTenantId() throws Exception { String tenantId="nhs7wd2c"; String defURL = "http://bd.basdoc.com/rest/data/transfer"; URL url = new URL(defURL); // 打开和URL之间的连接 HttpURLConnection con = (HttpURLConnection)url.open.
Http
请求
之基于
HttpUrlConnection
,支持
Header
,
Body
传值,支持Multipart上传文件:
public static String
post
(String actionUrl, Map headParams,
Map params,
Map files) throws IOException {
String BOUNDARY = java
先谈一些我的认识,有可能不完全正确:
Socket 应该是 TCP 协议层的概念,如果要使用 Socket 直接通信,需要使用远程地址和端口号。其中,端口号根据具体的协议而不同,比如 HTTP 协议默认使用的端口号为 80/tcp。
HttpURLConnec...
1.conn.setRequestProPerty(name,value),两个
参数
都是字符串。。。。
2.用
httpURLConnection
的setRequestProPerty(name,value)方法,就能向
header
里添加信息。
如:设置content-type
httpURLConnection
.setRequestProperty("token", "10051:abc...
现在对接接口数据,都有一些很好用的工具类,例如:RestTemplate,但有些场景还是需要我们自己手动去
实现
,而且自己
实现
一遍也有利我们理解。废话不多说了,现在通过
HttpURLConnection
来发起get、
post
请求
。
Get
请求
@GetMapping("/getMethod")
public String testGetMethod() {
Post
man的
body
的类型主要由四种类型的
参数
: form-data、x-www-form-urlencoded、raw、binary
由于
post
请求
的
参数
才放到
请求
体(
Body
)里面,get的
请求
参数
一般都直接跟在url后面,所以这里
Body
里面
参数
都是指的
post
请求
参数
,那
post
请求
测试时怎么判断选择哪个格式的来发送
参数
呢
一、form-data(multipart/form-data),支持上传文件的表单类型:
form-data对应着http
请求
中的Content-Type=multip
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.
HttpURLConnection
;
import java.net.URL;
public class Http
Post
Example {
private final String USER_AGENT = "Mozilla/5.0";
public static void main(String[] args) throws Exception {
Http
Post
Example http = new Http
Post
Example();
System.out.println("Testing 1 - Send Http
POST
request");
http.send
Post
();
// HTTP
POST
request
private void send
Post
() throws Exception {
String url = "http://www.example.com";
URL obj = new URL(url);
HttpURLConnection
con = (
HttpURLConnection
) obj.openConnection();
//add reuqest
header
con.setRequestMethod("
POST
");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
String urlParameters = "param1=value1¶m2=value2";
// Send
post
request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = con.getResponseCode();
System.out.println("\nSending '
POST
' request to URL : " + url);
System.out.println("
Post
parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
in.close();
//print result
System.out.println(response.toString());