java傳送http請求時設定請求方式(post,put,delete,get)
阿新 • • 發佈:2019-01-29
重點:java.net包下面有兩個類是用來呼叫URL請求的。
第一個 URLconnection 只能使用常用的post方式請求
第二個 httpUrlconnection 可以主動設定四種請求方式
其中,這兩個類都是可以設定header引數傳參的(setRequestProperty(key,value))
程式碼如下:
1.urlconnection
public static String httpPost (String url, byte[] parameter, String base64) throws Exception{
java.util .Date data = new java.util.Date();
String timestamp = String.valueOf(data.getTime()/1000);//時間戳(精確到秒)
String signature = "*******";
//定義stringbuffer 方便後面讀取網頁返回位元組流資訊時的字串拼接
StringBuffer buffer = new StringBuffer();
//建立url_connection
java.net .URLConnection http_url_connection = null;
try {
http_url_connection = (new java.net.URL(url)).openConnection();
http_url_connection.setDoInput(true);
http_url_connection.setDoOutput(true);
http_url_connection.setRequestProperty ("Content-Length", String.valueOf(parameter.length));
http_url_connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
http_url_connection.setRequestProperty("accept", "application/json");
http_url_connection.setRequestProperty("authkey","************");//header設定authkey的引數
http_url_connection.setRequestProperty("signature",signature);//header設定signature的引數
http_url_connection.setRequestProperty("timestamp",timestamp);//header設定timestamp的引數
http_url_connection.setUseCaches(false);
if (null!=base64) {
//如果傳入的引數不為空,則通過base64將傳入引數解碼
http_url_connection.setRequestProperty("Authorization", "Basic "+new String(java.util.Base64.getEncoder().encode(base64.getBytes("utf-8")), "utf-8"));
}
// write request.
java.io.BufferedOutputStream output_stream = new java.io.BufferedOutputStream(http_url_connection.getOutputStream());
output_stream.write(parameter);
output_stream.flush();
output_stream.close();
output_stream = null;
java.io.InputStreamReader input_stream_reader = new java.io.InputStreamReader(http_url_connection.getInputStream(), "utf-8");
java.io.BufferedReader buffered_reader = new java.io.BufferedReader(input_stream_reader);
buffer = new StringBuffer();
String line;
while ((line = buffered_reader.readLine()) != null) {
buffer.append(line);
}
line=null;
input_stream_reader.close();
input_stream_reader = null;
buffered_reader.close();
buffered_reader = null;
// http_url_connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
2.httpUrlconnection
public static String httpPost (String url, byte[] parameter, String base64) throws Exception{
java.util.Date data = new java.util.Date();
String timestamp = String.valueOf(data.getTime()/1000);//時間戳(精確到秒)
String signature = "*********";
//定義stringbuffer 方便後面讀取網頁返回位元組流資訊時的字串拼接
StringBuffer buffer = new StringBuffer();
//建立url_connection
java.net.URLConnection http_url_connection = null;
try {
http_url_connection = (new java.net.URL(url)).openConnection();
java.net.HttpURLConnection HttpURLConnection = (java.net.HttpURLConnection)http_url_connection;//將urlconnection類強轉為httpurlconnection類
HttpURLConnection.setDoInput(true);
HttpURLConnection.setDoOutput(true);
HttpURLConnection.setRequestMethod("DELETE");//設定請求方式。可以是delete put post get
HttpURLConnection.setRequestProperty("Content-Length", String.valueOf(parameter.length));//設定內容的長度
HttpURLConnection.setRequestProperty("Content-Type", "application/json;charset=utf-8");//設定編碼格式
HttpURLConnection.setRequestProperty("accept", "application/json");//設定接收返回引數格式
HttpURLConnection.setRequestProperty("authkey","************");
HttpURLConnection.setRequestProperty("signature",signature);
HttpURLConnection.setRequestProperty("timestamp",timestamp);
HttpURLConnection.setUseCaches(false);
if (null!=base64) {
//如果傳入的引數不為空,則通過base64將傳入引數解碼
HttpURLConnection.setRequestProperty("Authorization", "Basic "+new String(java.util.Base64.getEncoder().encode(base64.getBytes("utf-8")), "utf-8"));
}
// write request.
java.io.BufferedOutputStream output_stream = new java.io.BufferedOutputStream(HttpURLConnection.getOutputStream());
output_stream.write(parameter);
output_stream.flush();
output_stream.close();
output_stream = null;
java.io.InputStreamReader input_stream_reader = new java.io.InputStreamReader(HttpURLConnection.getInputStream(), "utf-8");
java.io.BufferedReader buffered_reader = new java.io.BufferedReader(input_stream_reader);
buffer = new StringBuffer();
String line;
while ((line = buffered_reader.readLine()) != null) {
buffer.append(line);
}
line=null;
input_stream_reader.close();
input_stream_reader = null;
buffered_reader.close();
buffered_reader = null;
// http_url_connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}