java 通过Ajax前台传参数 并用 HttpURLConnection Post方式访问对外的接口
??? 前兩天做項目遇到一個問題,就是在自己的項目中要去訪問項目外部的接口,從自己的項目中傳參數過去,通過調用 對方提供的接口去獲取想要得到的數據!第一次接觸到在自己項目中去訪問和調用外部的資源,然后在網上去找資料,看有沒有相關的資料可以參考,然后通過參考其他人的博客資料,最終把這個問題解決了。自己總結一下這個過程,也供遇到相同或者類似問題的朋友可以快速的定位和解決問題。
???? 下面講一下我的問題和我解決問題的過程。
???? 1.問題:對方提供 調用的接口 ,以及要傳的參數
???? 2.解決辦法:我應該用什么方法去調用 接口 ,用什么方法去傳遞參數
下面貼我調用的相關接口信息以及代碼:
??? 1.接口信息
???? 接口: XXX.XXX.cn/XXX/index.php
??? 方式:post
??? 參數:mobile (手機號)....
?說明一下手機號是從前天頁面獲取:
①: 我前臺用Jquery獲取手機號:
相關的代碼:
<span>手機號</span><div><input class="form-control" type="text" name="mobile" id="mobile"/><a href="javascript:void(0);" id="insurance_smbtn"class="btn btn-custom2">搜索</a></div>獲取手機號并且將數據傳到后臺進行處理
②:后臺處理controller中進行相關的接收參數和用HttpConnection Post傳遞
2.Post和Get方法工具類,方便以后使用
(1)工具類
package com.dufy.http;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map;/*** @author dufy* @description Http的Post和Get請求方式* @creation 2017年1月12日 * @QQ : 742981086 */ public class TestHttpRequest {/*** http get請求方式* @param urlStr* @param params***/public static String get(String urlStr,Map<String,String> params){InputStream is = null;BufferedReader reader = null;String resultStr ="";try {String paramsStr = "";for(String param : params.keySet()){paramsStr += "&" + param + "=" + params.get(param);}if(!paramsStr.isEmpty()){paramsStr = paramsStr.substring(1);urlStr += "?" + paramsStr;}URL url = new URL(urlStr);HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();httpCon.setRequestMethod("GET");is = httpCon.getInputStream();reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));StringBuilder sb = new StringBuilder();String line = null;while ((line = reader.readLine()) != null) { sb.append(line); }resultStr = sb.toString();} catch (Exception e) {e.printStackTrace();} finally {try {if(reader!=null)reader.close();if(is!=null)is.close();} catch (Exception e) {e.printStackTrace();}}return resultStr;}/*** http post請求方式* @param urlStr* @param params***/public static String post(String urlStr,Map<String,String> params){URL connect;StringBuffer data = new StringBuffer(); try { connect = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection)connect.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true);connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //conn.setRequestProperty("Cookie", cookiesAll.toString()); 設置cookie 若需要登錄操作OutputStreamWriter paramout = new OutputStreamWriter( connection.getOutputStream(),"UTF-8"); String paramsStr = "";for(String param : params.keySet()){paramsStr += "&" + param + "=" + params.get(param);}if(!paramsStr.isEmpty()){paramsStr = paramsStr.substring(1);}paramout.write(paramsStr); paramout.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "UTF-8")); String line; while ((line = reader.readLine()) != null) { data.append(line); } paramout.close(); reader.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return data.toString();} }(2)測試調用方法
package com.dufy.http;import java.util.HashMap; import java.util.Map;public class TestClient {/*** @author dufy* @description 測試Http的調用* @creation 2017年1月12日 * @QQ : 742981086 */public static void main(String[] args){String url = "http://XXX";//url接口地址Map<String,String> params = new HashMap<String,String>();params.put("param1", "1");params.put("param2", "2");params.put("param3", "3");String resultPost = TestHttpRequest.post(url, params);//post請求方式String resultGet = TestHttpRequest.get(url, params);//get請求方式System.out.println(resultPost);}}
通過以上的代碼,正確的接口名和傳遞正確的參數,最后返回了想要的結果。。。。
注:如果在開發中進行Http的一些測試,那么也可以使用一些在線的Http調用模擬工具!
?
------------------------------------------------------------------------------------------------------------------------------------------------------
其中過程中參看了一下博客中的一些內容,謝謝這些大神們提供的資料!
java發送http的get、post請求
http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html
JAVA HttpURLConnection Post方式提交傳遞參數 ?
http://wang09si.blog.163.com/blog/static/1701718042013631104658130/
如果你遇到我上面的問題,沒有得到解決,歡迎和你一起探討探討!
總結
以上是生活随笔為你收集整理的java 通过Ajax前台传参数 并用 HttpURLConnection Post方式访问对外的接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 年龄大了学计算机,年龄大了就“不值钱”的
- 下一篇: jquery在两个HTM页面之间跳转传递