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

前两天做项目遇到一个问题,就是在自己的项目中要去访问项目外部的接口,从自己的项目中传参数过去,通过调用 对方提供的接口去获取想要得到的数据!第一次接触到在自己项目中去访问和调用外部的资源,然后在网上去找资料,看有没有相关的资料可以参考,然后通过参考其他人的博客资料,最终把这个问题解决了。自己总结一下这个过程,也供遇到相同或者类似问题的朋友可以快速的定位和解决问题。     下面讲一下我的问题和

大家好,又见面了,我是全栈君。

    前两天做项目遇到一个问题,就是在自己的项目中要去访问项目外部的接口,从自己的项目中传参数过去,通过调用 对方提供的接口去获取想要得到的数据!第一次接触到在自己项目中去访问和调用外部的资源,然后在网上去找资料,看有没有相关的资料可以参考,然后通过参考其他人的博客资料,最终把这个问题解决了。自己总结一下这个过程,也供遇到相同或者类似问题的朋友可以快速的定位和解决问题。

     下面讲一下我的问题和我解决问题的过程。

     1.问题:对方提供 调用的接口 ,以及要传的参数

     2.解决办法:我应该用什么方法去调用 接口 ,用什么方法去传递参数

下面贴我调用的相关接口信息以及代码:

    1.接口信息

     接口: XXX.XXX.cn/XXX/index.php

    方式:post

    参数:mobile (手机号)….

 说明一下手机号是从前天页面获取:

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

①: 我前台用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 end
            error : 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/

如果你遇到我上面的问题,没有得到解决,欢迎和你一起探讨探讨!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121291.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python 2021激活码破解方法

    python 2021激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
  • 伪元素的作用_获取iframe中的元素

    伪元素的作用_获取iframe中的元素目标网站红薯中文网获取网页源代码也获取不了这些动态渲染的数据所以用简单的,但是有点麻烦的方法使用selenium执行js,或者直接在浏览器里面执行jsfunctionkkk(){varmyIdElement=document.getElementsByClassName(“context_kw11″);varbeforeStyle=window.getComputedStyle(myIdElement[0],”::before”);returnbeforeStyle.con

    2022年10月12日
  • 大数据数据建模[通俗易懂]

    大数据数据建模[通俗易懂]今天给大家分享一下 数据开发工作中数据建模的步骤,                           第一步:选择模型或者自定义模型这第一步需要我们基于业务问题,来决定我们需要选择哪种模型,目前市场中有很多模型可以供我们选择,比如,如果要预测产品销量,则可以选择数值预测模型(比如回归模型,时序预测……);如果要预测员工是否离职,则可…

    2022年5月3日
  • installous下载ipa目录

    installous下载ipa目录/private/var/mobile/Documents/Installous/Downloads

    2022年9月20日
  • SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run …”

    SpringBoot项目报错解决:“Error starting ApplicationContext. To display the conditions report re-run …”SpringBoot项目报错:ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith’debug’enabled.以下方案80%可以帮助您解决这些个‘可恶的’问题报错内容和截图如下:ConnectedtothetargetVM,address:’127.0.0.1:4963′,transport:’socket’.____

    2022年7月18日
  • java自适应网站成品源代码出售 h5网页推广展示型官网CMS系统源码

    java自适应网站成品源代码出售 h5网页推广展示型官网CMS系统源码QQ:464652874项目具体详情点击这企业门户网站系统源代码java响应式企业官网成品源码公司行业通用源代码web网站出售可二次开发源码项目介绍:企业门户网站系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的企业了解和熟知企业门户网站系统的便捷高效,不仅为用户提供了服务,而且也推广了自己,让更多的用户了解自己。对于企业而言,若拥有自己的企业门户网站系统,通过企业门户网站系统让企业的宣传、营销提上一个新台阶,同时提升了企业形象。技术介绍:前端页面自适应,支持PC和H5手机端、平

    2022年7月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号