日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 通过Ajax前台传参数 并用 HttpURLConnection Post方式访问对外的接口

發布時間:2024/5/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>

獲取手機號并且將數據傳到后臺進行處理

$(function(){$('#insurance_smbtn').click(function(){var mobile = $('#mobile').val();if(mobile==''){alert("請填寫電話");return false;} else{var reg = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;if(!reg.test(mobile)){ //|| !reg1.test(mobileNo) 驗證座機alert("電話格式不正確");return false;}} // ajax start$.ajax({type: 'POST',url :"${pageContext.servletContext.contextPath}/XXXX/queryXXX",data: {mobile : mobile,},success: function(data){},//success enderror : function() {alert("出錯啦!請從查詢!");return false;} });//end ajax });//click end});

②:后臺處理controller中進行相關的接收參數和用HttpConnection Post傳遞


@RequestMapping(value="/queryXXX") @ResponseBody //必須要加入響應返回數據 public void queryKeyinElecPolicyService(HttpServletRequest request,HttpServletResponse response) throws IOException { //獲取前臺傳入的參數String mobile = request.getParameter("mobile");//調用的接口String url = "你調用的接口";//組裝成Map 進行參數的傳遞Map<String,String> params = new HashMap<String,String>();params.put("data", mobile);//調用Http post 請求String resultStr = httpPost(url, params);//設置編碼格式,并返回Json數據到頁面response.setContentType("text/json;charset=UTF-8");response.getWriter().write(resultStr);//返回數據到前臺} /*** 發送Http協議 通過post傳參數到接口并返回數據* */public static String httpPost(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.setUseCaches(false);//post不能使用緩存connection.setInstanceFollowRedirects(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)");OutputStreamWriter paramout = new OutputStreamWriter( connection.getOutputStream(),"UTF-8"); String paramsStr = ""; //拼接Post 請求的參數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.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方式访问对外的接口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。