本文目錄一覽:
求教java程序怎麼向網頁伺服器發送請求
POST方式發送請求示例: String fullurl = url; //打開連接 URLConnection conn =new URL(fullurl).openConnection(); //設置通用的請求屬性 conn.setRequestProperty(“accept”, “*/*”); conn.setRequestProperty(“connection”, “Keep-Alive”); conn.setRequestProperty(“user-agent”, “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36”); //發送POST請求必須設置下面兩行 conn.setDoInput(true); conn.setDoOutput(true); try ( //獲取URLConnection對象對應的輸出流 PrintWriter out = new PrintWriter(conn.getOutputStream());) { out.print(parm);//發送請求參數(key1=value1key2=value2) out.flush();//flush輸出流的緩衝 } catch (Exception e) {} //獲取響應頭欄位 MapString, ListString map = conn.getHeaderFields(); //根據輸入流讀取響應數據 InputStream is = conn.getInputStream();
Java發送get請求時設置ua
HttpClient方式發送請求或則以流的方式。
兩種實現方式不同,怎麼使用看個人喜好,不過在項目開發過程中,使用流的方式部署在預發機linux機器上會出現發送請求返回null的情況,但是本地windows卻正常訪問,而且,換另外一台預發機也能正常獲取數據,目前還沒有研究出個所以然,get是從伺服器上獲取數據,post是向伺服器傳送數據,get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到,post是通過HTTPpost機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。
如何使用java發送post請求
/**
* 向指定 URL 發送POST方法的請求
*
* @param url
* 發送請求的 URL
* @param param
* 請求參數,請求參數應該是 name1=value1name2=value2 的形式。
* @return 所代表遠程資源的響應結果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = “”;
try {
URL realUrl = new URL(url);
// 打開和URL之間的連接
URLConnection conn = realUrl.openConnection();
// 設置通用的請求屬性
conn.setRequestProperty(“accept”, “*/*”);
conn.setRequestProperty(“connection”, “Keep-Alive”);
conn.setRequestProperty(“user-agent”,
“Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)”);
// 發送POST請求必須設置如下兩行
conn.setDoOutput(true);
conn.setDoInput(true);
// 獲取URLConnection對象對應的輸出流
out = new PrintWriter(conn.getOutputStream());
// 發送請求參數
out.print(param);
// flush輸出流的緩衝
out.flush();
// 定義BufferedReader輸入流來讀取URL的響應
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println(“發送 POST 請求出現異常!”+e);
e.printStackTrace();
}
//使用finally塊來關閉輸出流、輸入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
求解java怎樣發送https請求
使用httpClient可以發送,具體的可以參考下面的代碼
SSLClient類,繼承至HttpClient
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
//用於進行Https請求的HttpClient
public class SSLClient extends DefaultHttpClient{
public SSLClient() throws Exception{
super();
SSLContext ctx = SSLContext.getInstance(“TLS”);
X509TrustManager tm = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = this.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme(“https”, 443, ssf));
}
}
HttpClient發送post請求的類
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/*
* 利用HttpClient進行post請求的工具類
*/
public class HttpClientUtil {
public String doPost(String url,MapString,String map,String charset){
HttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try{
httpClient = new SSLClient();
httpPost = new HttpPost(url);
//設置參數
ListNameValuePair list = new ArrayListNameValuePair();
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext()){
EntryString,String elem = (EntryString, String) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));
}
if(list.size() 0){
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if(response != null){
HttpEntity resEntity = response.getEntity();
if(resEntity != null){
result = EntityUtils.toString(resEntity,charset);
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
}
測試代碼
import java.util.HashMap;
import java.util.Map;
//對介面進行測試
public class TestMain {
private String url = “”;
private String charset = “utf-8”;
private HttpClientUtil httpClientUtil = null;
public TestMain(){
httpClientUtil = new HttpClientUtil();
}
public void test(){
String httpOrgCreateTest = url + “httpOrg/create”;
MapString,String createMap = new HashMapString,String();
createMap.put(“authuser”,”*****”);
createMap.put(“authpass”,”*****”);
createMap.put(“orgkey”,”****”);
createMap.put(“orgname”,”****”);
String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
System.out.println(“result:”+httpOrgCreateTestRtn);
}
public static void main(String[] args){
TestMain main = new TestMain();
main.test();
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239911.html
微信掃一掃
支付寶掃一掃