您好,登錄后才能下訂單哦!
三個(gè)例子 —JAVA發(fā)送http get/post請(qǐng)求,調(diào)用http接口、方法
例1:使用 HttpClient (commons-httpclient-3.0.jar
jar下載地址:http://xiazai.jb51.net/201904/yuanma/commons-httpclient-3.0.rar
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.InputStreamRequestEntity; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; public class HttpTool { /** * 發(fā)送post請(qǐng)求 * * @author Michael -----CSDN: http://blog.csdn.net/capmiachael * @param params * 參數(shù) * @param requestUrl * 請(qǐng)求地址 * @param authorization * 授權(quán)書(shū) * @return 返回結(jié)果 * @throws IOException */ public static String sendPost(String params, String requestUrl, String authorization) throws IOException { byte[] requestBytes = params.getBytes("utf-8"); // 將參數(shù)轉(zhuǎn)為二進(jìn)制流 HttpClient httpClient = new HttpClient();// 客戶端實(shí)例化 PostMethod postMethod = new PostMethod(requestUrl); //設(shè)置請(qǐng)求頭Authorization postMethod.setRequestHeader("Authorization", "Basic " + authorization); // 設(shè)置請(qǐng)求頭 Content-Type postMethod.setRequestHeader("Content-Type", "application/json"); InputStream inputStream = new ByteArrayInputStream(requestBytes, 0, requestBytes.length); RequestEntity requestEntity = new InputStreamRequestEntity(inputStream, requestBytes.length, "application/json; charset=utf-8"); // 請(qǐng)求體 postMethod.setRequestEntity(requestEntity); httpClient.executeMethod(postMethod);// 執(zhí)行請(qǐng)求 InputStream soapResponseStream = postMethod.getResponseBodyAsStream();// 獲取返回的流 byte[] datas = null; try { datas = readInputStream(soapResponseStream);// 從輸入流中讀取數(shù)據(jù) } catch (Exception e) { e.printStackTrace(); } String result = new String(datas, "UTF-8");// 將二進(jìn)制流轉(zhuǎn)為String // 打印返回結(jié)果 // System.out.println(result); return result; } /** * 從輸入流中讀取數(shù)據(jù) * * @param inStream * @return * @throws Exception */ public static byte[] readInputStream(InputStream inStream) throws Exception { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); outStream.close(); inStream.close(); return data; } }
例2:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; /** * Http請(qǐng)求工具類(lèi) * @author snowfigure * @since 2014-8-24 13:30:56 * @version v1.0.1 */ public class HttpRequestUtil { static boolean proxySet = false; static String proxyHost = "127.0.0.1"; static int proxyPort = 8087; /** * 編碼 * @param source * @return */ public static String urlEncode(String source,String encode) { String result = source; try { result = java.net.URLEncoder.encode(source,encode); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return "0"; } return result; } public static String urlEncodeGBK(String source) { String result = source; try { result = java.net.URLEncoder.encode(source,"GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return "0"; } return result; } /** * 發(fā)起http請(qǐng)求獲取返回結(jié)果 * @param req_url 請(qǐng)求地址 * @return */ public static String httpRequest(String req_url) { StringBuffer buffer = new StringBuffer(); try { URL url = new URL(req_url); HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoOutput(false); httpUrlConn.setDoInput(true); httpUrlConn.setUseCaches(false); httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); // 將返回的輸入流轉(zhuǎn)換成字符串 InputStream inputStream = httpUrlConn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String str = null; while ((str = bufferedReader.readLine()) != null) { buffer.append(str); } bufferedReader.close(); inputStreamReader.close(); // 釋放資源 inputStream.close(); inputStream = null; httpUrlConn.disconnect(); } catch (Exception e) { System.out.println(e.getStackTrace()); } return buffer.toString(); } /** * 發(fā)送http請(qǐng)求取得返回的輸入流 * @param requestUrl 請(qǐng)求地址 * @return InputStream */ public static InputStream httpRequestIO(String requestUrl) { InputStream inputStream = null; try { URL url = new URL(requestUrl); HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection(); httpUrlConn.setDoInput(true); httpUrlConn.setRequestMethod("GET"); httpUrlConn.connect(); // 獲得返回的輸入流 inputStream = httpUrlConn.getInputStream(); } catch (Exception e) { e.printStackTrace(); } return inputStream; } /** * 向指定URL發(fā)送GET方法的請(qǐng)求 * * @param url * 發(fā)送請(qǐng)求的URL * @param param * 請(qǐng)求參數(shù),請(qǐng)求參數(shù)應(yīng)該是 name1=value1&name2=value2 的形式。 * @return URL 所代表遠(yuǎn)程資源的響應(yīng)結(jié)果 */ public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打開(kāi)和URL之間的連接 URLConnection connection = realUrl.openConnection(); // 設(shè)置通用的請(qǐng)求屬性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立實(shí)際的連接 connection.connect(); // 獲取所有響應(yīng)頭字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍歷所有的響應(yīng)頭字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定義 BufferedReader輸入流來(lái)讀取URL的響應(yīng) in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("發(fā)送GET請(qǐng)求出現(xiàn)異常!" + e); e.printStackTrace(); } // 使用finally塊來(lái)關(guān)閉輸入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 向指定 URL 發(fā)送POST方法的請(qǐng)求 * * @param url * 發(fā)送請(qǐng)求的 URL * @param param * 請(qǐng)求參數(shù),請(qǐng)求參數(shù)應(yīng)該是 name1=value1&name2=value2 的形式。 * @param isproxy * 是否使用代理模式 * @return 所代表遠(yuǎn)程資源的響應(yīng)結(jié)果 */ public static String sendPost(String url, String param,boolean isproxy) { OutputStreamWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); HttpURLConnection conn = null; if(isproxy){//使用代理模式 @SuppressWarnings("static-access") Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort)); conn = (HttpURLConnection) realUrl.openConnection(proxy); }else{ conn = (HttpURLConnection) realUrl.openConnection(); } // 打開(kāi)和URL之間的連接 // 發(fā)送POST請(qǐng)求必須設(shè)置如下兩行 conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestMethod("POST"); // POST方法 // 設(shè)置通用的請(qǐng)求屬性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.connect(); // 獲取URLConnection對(duì)象對(duì)應(yīng)的輸出流 out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); // 發(fā)送請(qǐng)求參數(shù) out.write(param); // flush輸出流的緩沖 out.flush(); // 定義BufferedReader輸入流來(lái)讀取URL的響應(yīng) in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("發(fā)送 POST 請(qǐng)求出現(xiàn)異常!"+e); e.printStackTrace(); } //使用finally塊來(lái)關(guān)閉輸出流、輸入流 finally{ try{ if(out!=null){ out.close(); } if(in!=null){ in.close(); } } catch(IOException ex){ ex.printStackTrace(); } } return result; } public static void main(String[] args) { //demo:代理訪問(wèn) String url = "http://api.adf.ly/api.php"; String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com"; String sr=HttpRequestUtil.sendPost(url,para,true); System.out.println(sr); } }
例3
/** * 發(fā)送Http post請(qǐng)求 * * @param xmlInfo * json轉(zhuǎn)化成的字符串 * @param URL * 請(qǐng)求url * @return 返回信息 */ public static String doHttpPost(String xmlInfo, String URL) { System.out.println("發(fā)起的數(shù)據(jù):" + xmlInfo); byte[] xmlData = xmlInfo.getBytes(); InputStream instr = null; java.io.ByteArrayOutputStream out = null; try { URL url = new URL(URL); URLConnection urlCon = url.openConnection(); urlCon.setDoOutput(true); urlCon.setDoInput(true); urlCon.setUseCaches(false); urlCon.setRequestProperty("content-Type", "application/json"); urlCon.setRequestProperty("charset", "utf-8"); urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length)); System.out.println(String.valueOf(xmlData.length)); DataOutputStream printout = new DataOutputStream( urlCon.getOutputStream()); printout.write(xmlData); printout.flush(); printout.close(); instr = urlCon.getInputStream(); byte[] bis = IOUtils.toByteArray(instr); String ResponseString = new String(bis, "UTF-8"); if ((ResponseString == null) || ("".equals(ResponseString.trim()))) { System.out.println("返回空"); } System.out.println("返回?cái)?shù)據(jù)為:" + ResponseString); return ResponseString; } catch (Exception e) { e.printStackTrace(); return "0"; } finally { try { out.close(); instr.close(); } catch (Exception ex) { return "0"; } } }
以上所述是小編給大家介紹的Java發(fā)送http get/post請(qǐng)求調(diào)用接口/方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。