精华内容
下载资源
问答
  • Java跨域请求

    2017-09-12 10:49:17
    最近在公司需要在第三方服务器上获取一些数据,可是公司和其他公司没有合作关系,只能通过发送跨域请求来获取了。通过整理,将其写成一个API接口,需要传入四个参数 1、reqType:请求方式,post和get请求 2、req...
    最近在公司需要在第三方服务器上获取一些数据,可是公司和其他公司没有合作关系,只能通过发送跨域请求来获取了。通过整理,将其写成一个API接口,需要传入四个参数
    1、reqType:请求方式,post和get请求
    2、reqHeaders:请求头的设置,因为在做的时候会对请求头有一定的设置
    3、reqParam:请求参数(post)
    4、reqUrl:请求地址
    

    下面就是我写的方法
    使用的API有
    URL:匹配连接
    URLconnecti : 建立连接
    注意点:
    1、在发送post请求时,需要将URLconnection的setDoinput和setDooutput设置为true;
    2、URLconnection的connect()方法其实在进行输出流时就隐试的调用了

    代码

    package cn.saleNc.uitl;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Map;
    
    public class urlConnect {
        /**
         *
         * @param requrl       请求地址
         * @param reqparam     请求参数
         * @param reqHeaders   请求头
         * @param reqType       请求方式
         * @return
         */
        public static String reqGet(String requrl, String reqparam, String reqHeaders, String reqType ){
            String result = "";
            BufferedReader in = null;
            PrintWriter out = null;
            //真实的请求地址
            String realUrl = "";
    
            //判断是哪种请求方式(默认以get请求方式)
            if ( "post" == reqType ){
                realUrl = requrl;
                try {
                    URL url = new URL(realUrl);
                    //打开URL连接
                    URLConnection urlCon = url.openConnection();
                    //设置请求头(判断请求头是否有设置的必要)
                    if ( reqHeaders.isEmpty() ){
                        String reqHeadersParam = reqHeaders.substring(1,reqHeaders.length());
                        String[] paramArr = reqHeadersParam.split(",");
                        String[] keyValue;
                        for (int n=0;n<paramArr.length;n++){
                            keyValue = paramArr[n].split(":");
                            urlCon.setRequestProperty(keyValue[0],keyValue[1]);
                        }
                    }
                    //设置下面两行才能发送post请求(因为post需要在URL通道中发送数据)
                    urlCon.setDoInput(true);
                    urlCon.setDoOutput(true);
                    //获取输出流
                    out = new PrintWriter(urlCon.getOutputStream());
                    //fluse输出流
                    out.flush();
                    //获取服务器的输入流
                    in = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
                    String param;
                    while ( (param = in.readLine()) != null ){
                        result += param;
                    }
    
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    out.close();
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }else {
                try {
                    realUrl = realUrl + "?" + reqparam;
                    URL url = new URL(realUrl);
                    // 打开和URL之间的连接
                    URLConnection connection = url.openConnection();
                    // 建立实际的连接
                    connection.connect();
                    // 定义 BufferedReader输入流来读取URL的响应
                    in = new BufferedReader(new InputStreamReader(
                            connection.getInputStream()));
                    String param;
                    while ((param = in.readLine()) != null) {
                        result += param;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // 使用finally块来关闭输入流
                finally {
                    try {
                        if (in != null) {
                            in.close();
                        }
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }
                }
            }
    
            return result;
        }
    }
    
    展开全文
  • java跨域请求

    2019-08-08 14:41:58
    1.如果能用localhost访问tomcat,IP地址却不行,可以在server.xml中添加address="0.0.0.0" ...2.允许跨域: 可以在post或者get前面加这句话: response.addHeader("Access-Control-Allow-Orig...

    1.如果能用localhost访问tomcat,IP地址却不行,可以在server.xml中添加address="0.0.0.0"

    参考:https://blog.csdn.net/ybhjx/article/details/73657002

    2.允许跨域:

     可以在post或者get前面加这句话:

    response.addHeader("Access-Control-Allow-Origin", "*");//表示谁都可以访问

    或者

    response.addHeader("Access-Control-Allow-Origin", "http://10.1.8.167:1234");//表示IP为10.1.8.167的用户可以通过端口1234访问,这个1234是自己服务器的端口,比如自己配了个网站,映射路径是D:/,在给这个网站配置端口的时候,就用了1234.

     

    3.配置完跨域后,可以设置其他权限:

            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH");
            response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type,Token,Accept, Connection, User-Agent, Cookie");
            response.setHeader("Access-Control-Max-Age", "3628800");  
     

    展开全文
  • [Java教程]AJAX跨域请求数据02017-07-06 00:00:25由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据请求数据需要调用浏览器的内置构造函数var xhr = new注意点 在IE8之前支持的 ActiveXobject(...

    [Java教程]AJAX跨域请求数据

    0

    2017-07-06 00:00:25

    由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据

    请求数据需要调用浏览器的内置构造函数

    var xhr = new

    注意点 在IE8之前支持的 ActiveXobject("Microsoft.

    通过该对象进行获取

    获取数据的四种状态  xhr.readyState 该属性保存着请求数据的几种状态

    1.xhr.open(请求方式,请求地址,设置同/异步);

    2.xhr.send(null);//发送请求  如果是post请求 那么参数需要在send中进行传递

    3.会一直检测数据是否返回

    4.数据返回 那么xhr.readyState的值是4  说明数据返回成功

    那么我们需要进行跨域请求如何做呢

    方案一:

    利用script标签的src属性请求数据  src属性请求的数据浏览器是不会进行拦截的

    这样我们是可以请求到数据的  但是这样有一些缺点

    1.我们无法控制何时发送请求的  页面加载到这里就是发送请求的

    2.这样的方式  请求方式是同步的请求 需要请求到数据才会执行下一步的代码  这样页面加载时间可能延长

    3.所以建议不要使用这样的方式 不推荐

    方案二:

    在js中动态创建script标签 指定请求的接口

    var script = document.createELement("script");

    //将script追加到head标签中

    document.getElementsTagName("head")[0].appendChild(script);

    优点:我们可以控制请求的时机  并且这样请求的方式是异步的 不会延长页面加载的时间

    重要点:我们可以在请求数据中调用请求页面中的函数  使用函数的形参接收请求回来的数据

    方案三:

    在请求的后端接口设置一个 请求头即可

    Access-Control-Allow-Origin

    含有这个请求头 前端页面跨域请求的数据就不会被浏览器进行拦截啦

    方案四:

    使用标签 将一个页面 将可以可变的内容部分放置在该标签中  发送请求就会进行刷新啦  严格意义上不算ajax啦

    该方式在ajax未出现  就是使用该标签实现请求数据的

    本文网址:http://www.shaoqun.com/a/316046.html

    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

    ajax

    0

    展开全文
  • 只需一行代码就能解决跨域 只用修改后端, 前端不用处理, 适用于JAVA.SpringMVC 包括SpringBoot与SSM都适用 给Controller添加注解 生效的只有一个注解, 在SpringBoot中无需额外的包 @CrossOrigin 完整代码 @Cross...

    只需一行代码就能解决跨域

    只用修改后端, 前端不用处理, 适用于JAVA.SpringMVC
    包括SpringBoot与SSM都适用

    给Controller添加注解

    生效的只有一个注解, 在SpringBoot中无需额外的包

    @CrossOrigin
    

    完整代码

    @CrossOrigin
    @ResponseBody
    @Controller
    public class TestController {
        @RequestMapping("user")
        public Map<String, Object> user(HttpServletResponse response) {
            Map<String, Object> map = new HashMap<>();
            map.put("name", "zhang");
            map.put("age", 1);
            return map;
        }
    }
    

    说明

    @CrossOrigin
    可以加在类上, 对类中所有方法生效, 也可以只加在方法上.
    所有的IP都可以访问.
    @CrossOrigin(origins = “http://127.0.0.1:8848”)
    添加origins属性何以指定某个IP可以跨域访问

    原理

    使用的是CORS, 点击去了解

    展开全文
  • 为了跟上新的潮流,学习前后端分离的概念及技术是必须的,跨域也随之而产生。 首先确定什么是前后端分离,它不仅是对代码的解耦,也是对开发人员的解耦,真正的前端是前端,后台是后台,开发速度至少快一倍。 即你是...
  • @RequestMapping(value = "/crossDomain")@ResponseBodypublic Object crossDomain(ServletRequest request, ServletResponse response) {logger.info(ZhongYiYaoAreaController.class + "跨域请求data开始");...
  • Java跨域请求代码

    2018-09-17 16:00:58
    1、get请求的方式 get请求中,如果拼接的参数字符串中带有空格,后台会报错无法请求成功,适用于通过属性值查询对象接口。 import java.io.BufferedReader; import java.io.IOException; import java.io....
  • java跨域请求的方式

    2019-09-29 12:05:07
    1、基于servlet和过滤... * 设置跨域请求相关参数的过滤器 * @Author LQY * @Date 2018/12/3 */ @WebFilter("/*") public class MyFilter implements Filter { @Override public void init(FilterConfi...
  • SpringMVC中有个@CrossOrigin注解, 加上这个注解后,跨域请求就不会再报错了
  • @RequestMapping(value = "/crossDomain") @ResponseBody public Object crossDomain(ServletRequest request, ServletResponse response) { logger.info(ZhongYiYaoAreaController.class + "跨域请求...
  • java跨域请求-JSONP

    2016-06-15 09:22:22
    java web中如何跨域请求呢? 使用jsonp,详情请参考:http://json-p.org/ 页面代码如下:   &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head lang="en"&gt; &lt;meta ...
  • 首先建立一个 拦截器 ...代码如下 让java 允许跨域请求 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response....
  • And in this blog, I just record down my own study experience about how to achieve cross domain request in ABAP and Java. Cross Domain Request in ABAP Create a new ICF node in tcode SICF, implement ...
  • 最近项目用到了跨域请求 用的是jQuery的jsonp方式的跨域 但是第一次发送请求时的jessionId保存不到服务端 具体如下![这是第一次的请求](https://img-ask.csdn.net/upload/201710/12/1507793886_369457.png) ![这是第...
  • java跨域请求 (post raw参数请求)

    千次阅读 2018-07-26 10:35:48
    public String cat(String josn,String url) throws ClientProtocolException, IOException { HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url); ...
  • There is an excellent blog Cross-domain ...And in this blog, I just record down my own study experience about how to achieve cross domain request in ABAP and Java. Cross Domain Request in ABAP
  • And in this blog, I just record down my own study experience about how to achieve cross domain request in ABAP and Java. Cross Domain Request in ABAP Create a new ICF node in tcode SICF, implement ...
  • 跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。 资源可以是一个请求,或一个操作或一个数据流等 (一) 封装类一     publicclass HttpClientUtil { ...
  • The value of the ‘Access-Control-Allow-Origin’ header in the ...代码里面明明配置了跨域请求的配置,却还是报这个错 ```java @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) public class CorsConfig
  • And in this blog, I just record down my own study experience about how to achieve cross domain request in ABAP and Java. Cross Domain Request in ABAP Create a new ICF node in tcode SICF, implement ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,683
精华内容 673
关键字:

java跨域请求

java 订阅