精华内容
下载资源
问答
  • 微信小程序获取接口返回数据
    万次阅读
    2018-06-10 19:48:40
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author xsx
     */
    public class HttpUtil {
        /**
         * 向指定URL发送GET方法的请求
         *
         * @param url
         *            发送请求的URL
         * @param param
         *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
         * @return String 所代表远程资源的响应结果
         */
        public static String get(String urlNameString){
            String result = "";
            BufferedReader in = null;
            try {
    
                //System.out.println(urlNameString);
                URL realUrl = new URL(urlNameString);
                // 打开和URL之间的连接
                URLConnection connection = realUrl.openConnection();
                // 设置通用的请求属性
                connection.setRequestProperty("accept", "*/*");
                connection.setRequestProperty("connection", "Keep-Alive");
                connection.setRequestProperty("user-agent",
                        "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
                // 建立实际的连接
                connection.connect();
                // 获取所有响应头字段
                Map<String, List<String>> map = connection.getHeaderFields();
                // 遍历所有的响应头字段
                /*for (String key : map.keySet()) {
                    System.out.println(key + "--->" + map.get(key));
                }*/
                // 定义 BufferedReader输入流来读取URL的响应
                in = new BufferedReader(new InputStreamReader(
                        connection.getInputStream()));
                String line;
                while ((line = in.readLine()) != null) {
                    result += line;
                }
            } catch (Exception e) {
                System.out.println("发送GET请求出现异常!" + e);
                e.printStackTrace();
            }
            // 使用finally块来关闭输入流
            finally {
                try {
                    if (in != null) {
                        in.close();
                    }
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
            return result;
        }
    }

    更多相关内容
  • 获取接口请求的数据可以在Interceptor的afterCompletion中实现但是要重写RequestWrapper,代码记录如下: HttpServletRequestFilter import javax.servlet.*; import javax.servlet.annotation.WebFilter; import...

    一。获取接口请求的数据可以在Interceptor的afterCompletion中实现但是要重写RequestWrapper,代码记录如下:

    HttpServletRequestFilter

    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    import java.io.IOException;
    
    @Component
    @WebFilter(filterName = "HttpServletRequestFilter", urlPatterns = "/")
    @Order(10000)
    public class HttpServletRequestFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
     
        }
     
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            ServletRequest requestWrapper = null;
            if(servletRequest instanceof HttpServletRequest) {
                requestWrapper = new RequestWrapper((HttpServletRequest) servletRequest);
            }
            //获取请求中的流如何,将取出来的字符串,再次转换成流,然后把它放入到新request对象中
            // 在chain.doFiler方法中传递新的request对象
            if(null == requestWrapper) {
                filterChain.doFilter(servletRequest, servletResponse);
            } else {
                filterChain.doFilter(requestWrapper, servletResponse);
            }
        }
     
        @Override
        public void destroy() {
     
        }
    
    }

    RequestWrapper

    import javax.servlet.ReadListener;
    import javax.servlet.ServletInputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import java.io.*; 
    
    public class RequestWrapper extends HttpServletRequestWrapper {
        private final String body;
    
        public RequestWrapper(HttpServletRequest request) {
            super(request);
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader bufferedReader = null;
            InputStream inputStream = null;
            try {
                inputStream = request.getInputStream();
                if (inputStream != null) {
                    bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    char[] charBuffer = new char[128];
                    int bytesRead = -1;
                    while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
                        stringBuilder.append(charBuffer, 0, bytesRead);
                    }
                } else {
                    stringBuilder.append("");
                }
            } catch (IOException ex) {
    
            } finally {
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (bufferedReader != null) {
                    try {
                        bufferedReader.close();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            body = stringBuilder.toString();
        }
    
        @Override
        public ServletInputStream getInputStream() throws IOException {
            final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(body.getBytes());
            ServletInputStream servletInputStream = new ServletInputStream() {
                @Override
                public boolean isFinished() {
                    return false;
                }
                @Override
                public boolean isReady() {
                    return false;
                }
                @Override
                public void setReadListener(ReadListener readListener) {
                }
                @Override
                public int read() throws IOException {
                    return byteArrayInputStream.read();
                }
            };
            return servletInputStream;
    
        }
    
        @Override
        public BufferedReader getReader() throws IOException {
            return new BufferedReader(new InputStreamReader(this.getInputStream()));
        }
    
        public String getBody() {
            return this.body;
        }
    
    }
    

    afterCompletion

        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception)
                throws Exception {
    
            logger.debug("SessionInterceptor");
            // 获取地址
            String url = request.getRequestURL().toString();
            String requestMethod = request.getMethod();
            String servletPath = request.getServletPath();
            String body = new RequestWrapper(request).getBody();
            String contentType = request.getContentType();
            Map reqMap = new HashMap();
            if(requestMethod.equals("POST")) {
                if(!contentType.equals("text/plain")) 
                	body = "body is file,don't show.";
                if(body.length()>1000) 
                	body = body.substring(0, 1000);
            }
            if(requestMethod.equals("GET")) {
                // 获取请求参数
        		Map ParameterMap =  request.getParameterMap();
                Set<Map.Entry<String,String[]>> entry = ParameterMap.entrySet();
                Iterator<Map.Entry<String,String[]>> it = entry.iterator();
                while (it.hasNext()){
                    Map.Entry<String,String[]>  me = it.next();
                    String key = me.getKey();
                    String value = me.getValue()[0];
                    reqMap.put(key,value);
                }
            }
            logger.error("url: "+url+",requestMethod: "+requestMethod+",servletPath: "+servletPath+",body: " + body+",parameterMap: "+reqMap.toString());
            
            
        }

    二。获取接口返回的数据可以在filter中实现但是要重写ResponseWrapper,代码记录如下:

    HttpServletResponseFilter

    import javax.servlet.*;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.log4j.Logger;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    import java.io.IOException;
    
    @Component
    @WebFilter(filterName = "HttpServletResponseFilter", urlPatterns = "/")
    @Order(10000)
    public class HttpServletResponseFilter implements Filter {
    	static Logger logger = Logger.getLogger(HttpServletResponseFilter.class.getName());
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
     
        }
     
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        	HttpServletRequest req = (HttpServletRequest) servletRequest;
            HttpServletResponse resp = (HttpServletResponse) servletResponse;
            ResponseWrapper mResp = new ResponseWrapper(resp); // 包装响应对象 resp 并缓存响应数据
            filterChain.doFilter(req, mResp);
            byte[] bytes = mResp.getBytes(); // 获取缓存的响应数据
    	    logger.error(new String(bytes,"utf-8"));
        }
     
        @Override
        public void destroy() {
     
        }
    
    }

    ResponseWrapper

    import javax.servlet.ServletOutputStream;
    import javax.servlet.WriteListener;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletResponseWrapper;
    import java.io.*;
    
    public class ResponseWrapper extends HttpServletResponseWrapper {
    
        private ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        private HttpServletResponse response;
        private PrintWriter pwrite;
    
        public ResponseWrapper(HttpServletResponse response) {
            super(response);
            this.response = response;
        }
    
        @Override
        public ServletOutputStream getOutputStream() throws IOException {
            return new MyServletOutputStream(bytes); // 将数据写到 byte 中
        }
    
        /**
         * 重写父类的 getWriter() 方法,将响应数据缓存在 PrintWriter 中
         */
        @Override
        public PrintWriter getWriter() throws IOException {
            try{
                pwrite = new PrintWriter(new OutputStreamWriter(bytes, "utf-8"));
            } catch(UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            return pwrite;
        }
    
        /**
         * 获取缓存在 PrintWriter 中的响应数据
         * @return
         */
        public byte[] getBytes() {
            if(null != pwrite) {
                pwrite.close();
                return bytes.toByteArray();
            }
    
            if(null != bytes) {
                try {
                    bytes.flush();
                } catch(IOException e) {
                    e.printStackTrace();
                }
            }
            return bytes.toByteArray();
        }
    
        class MyServletOutputStream extends ServletOutputStream {
            private ByteArrayOutputStream ostream ;
    
            public MyServletOutputStream(ByteArrayOutputStream ostream) {
                this.ostream = ostream;
            }
    
            @Override
            public void write(int b) throws IOException {
                ostream.write(b); // 将数据写到 stream 中
            }
    
    		@Override
    		public boolean isReady() {
    			// TODO Auto-generated method stub
    			return false;
    		}
    
    		@Override
    		public void setWriteListener(WriteListener listener) {
    			// TODO Auto-generated method stub
    			
    		}
    
        }
    
    }

    本文参考了许多网上前辈们的踩坑历程,在此就不列举了,只做一记录

    如果任何疑问或学习交流,请搜索公众号"老秦的快乐生活"获取我的联系方式

    展开全文
  • java接收远程调用的数据,得到的是如上个数的返回内容,我怎么写才能获取到值,现在使用的请求方法如下:public static HttpResult postJsonData(String url, Map params, String charset) throws Exception{...

    548d111c355d2eae8c95dfa99aa4f155.png

    java接收远程调用的数据,得到的是如上个数的返回内容,我怎么写才能获取到值,现在使用的请求方法如下:

    public static HttpResult postJsonData(String url, Map params, String charset) throws Exception{

    CloseableHttpClient httpclient = HttpClientUtil.createDefault();

    HttpPost httpPost = new HttpPost(url);

    //拼接参数

    List list = new ArrayList();

    for (Map.Entry entry : params.entrySet()) {

    String key = entry.getKey().toString();

    String value = entry.getValue().toString();

    System.out.println("key=" \+ key + " value=" \+ value);

    NameValuePair pair = new BasicNameValuePair(key, value);

    list.add(pair);

    }

    CloseableHttpResponse response=null;

    try {

    if(StringUtils.isEmpty(charset)){

    charset = DEFAULT\_CHARSET;

    }

    httpPost.setEntity(new UrlEncodedFormEntity(list,charset));

    response = httpclient.execute(httpPost);

    /\*\*请求发送成功,并得到响应\*\*/

    if(response!=null && response.getStatusLine().getStatusCode() == HttpStatus.SC\_OK){

    HttpEntity httpEntity = response.getEntity();

    if (httpEntity!=null){

    System.out.println("响应内容为:" \+ EntityUtils.toString(httpEntity));

    //System.out.println("响应内容为1:" + httpEntity.getContent());

    }

    String result=null;

    try {

    result = EntityUtils.toString(httpEntity,DEFAULT\_CHARSET);

    logger.info(result);

    } catch (IOException e) {

    throw e;

    } finally {

    EntityUtils.consume(httpEntity);

    }

    return JSON.parseObject(result,HttpResult.class);

    //return httpEntity.getContent();

    }else{

    return null;

    }

    } catch (IOException e) {

    throw new Exception(e.getMessage());

    }finally {

    try{

    // 释放资源

    if(response!=null){

    response.close();

    }

    if(httpclient!=null){

    httpclient.close();

    }

    }catch (IOException e1){

    throw new Exception("CloseableHttpResponse close exception");

    }

    }

    }

    求教怎么写才能把返回的值取到,现在用上边的方法会报如下错误:

    bf71e9a03e1532fe4cea1bbed9f69157.png

    展开全文
  • 需求:在java工程中,需要用到别的接口提供的数据时,如何获取到这个数据,这个工具类可以获取接口返回的json数据,直接拷贝就可以用了。 package test.utils; import java.io.BufferedReader; import java.io....

    需求:在java工程中,需要用到别的接口提供的数据时,如何获取到这个数据,这个工具类可以获取接口返回的json数据,直接拷贝就可以用了。

    package test.utils;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * @Author:renxin.tang
     * @Desc: 获取HTTP接口数据
     * @Date: Created in 19:31 2019/4/22
     */
    public class GetHttpData {
        public static String getData(String addess){
            URL url = null;
            HttpURLConnection httpConn = null;
            BufferedReader in = null;
            StringBuffer sb = new StringBuffer();
            try{
                url = new URL(addess);
                in = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8") );
                String str = null;
                while((str = in.readLine()) != null) {
                    sb.append( str );
                }
            } catch (Exception ex) {
            } finally{
                try{
                    if(in!=null) {
                        in.close();
                    }
                }catch(IOException ex) {
                }
            }
            String  data =sb.toString();
            return data;
        }
    }
    
    
    展开全文
  • 微信小程序获取接口数据与展现

    千次阅读 多人点赞 2021-11-21 23:48:28
    data 是页面第一次渲染使用的初始数据。页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串,数字,布尔值,对象,数组。 { } 大括号,表示定义一个...
  • vue 请求接口获取数据

    千次阅读 2020-12-01 16:52:02
    vue 请求接口获取数据 1.链接:https://www.cnblogs.com/kymming/p/6484626.html <!doctype html> <html> <head> <meta charset="UTF-8"> <title>获取图片列表</title> <...
  • C#后端访问外部接口获取返回的json数据 在项目开发中经常会遇到需要调用第三方或者...先写一个不带参数调用接口获取接口返回的json数据。 先看案例 //要访问的接口地址 string Url = "http://localhost:8086/FES...
  • 按照官网示例,获取不到返回的值,后面上去GitHub找了找解决办法,在upload返回值中,文件会有一个状态:status为done或者error的时候会返回一个response字段,这个字段里面会包含接口返回数据,因此只需要坐下...
  • python提取接口返回的字段值

    千次阅读 2020-11-11 10:30:05
    一、接口返回数据类型,通过验证发现接口返回数据类型为:<class ‘dict’>,即字典类型的数据 dt = { "msg": "查询成功", "code": 0, "data": [ { "issue": "201110025", "draw": "155937" }
  • //Java获取接口返回的json JSONObject jsonObj = new JSONObject(); jsonObj.put("userId", user_id); JSONObject object=httpUtils.sendPost(...
  • 1.获取方式 Map<String, String> map = WitMedicalUtils.parseRequestMap(request.getParameterMap()); 2.解析方法:WitMedicalUtils.parseRequestMap() public static Map<String,String> ...
  • 今天在zuul上面获取返回值后,接口获取不到数据 主要代码如下: RequestContext ctx = RequestContext.getCurrentContext(); InputStream stream = ctx.getResponseDataStream(); String body = StreamUtils....
  • 接口数据 处理 主要看sign签名的规则 $params = $this->getRequest()->getPost(); //客户号码 //客户电话 $from_number = $params['tel'] = '13888888888'; //中继号码 $to_number = '021123...
  • python selenium 获取接口数据

    千次阅读 2020-06-01 16:35:34
    python selenium 获取接口数据。 selenium没有直接提供查询的函数,但是可以通过webdriver提供的API查询,使用的函数是Network.getResponseBody webdriver提供的API文档:...
  • // Request curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges...使用火狐httprequest插件的时候,输入url(http:127.0.0.1:8545)和参数,调用post方法,接口返回数据,这个工具可以实现嘛?
  • 如图那样。。不要使用后台,直接用jq来抓取,可不可行??领导说不能用后台语言来实现。。本来用C#做好了的,现在又要重新做过
  • 获取天气数据 (根据天气接口返回数据) 接口:心知天气 ulr:https://api.seniverse.com/v3/pro/weather/grid/now.json?key=your_api_key&amp;location=39.865927:116.359805 请求参数: key:你的API密钥 location...
  • tp5中利用接口获取返回数据的方法

    千次阅读 2018-04-18 12:15:39
    ps:代码内容为工作上的记录,最重要的是知道逻辑,其他的参数的命名根据自己需要进行修改public function jwFansShopping(){ $this-&gt;assign('login_user_id',Session::get('login_user_id')... /* 获取专...
  • vue.js-用接口返回数据渲染列表

    千次阅读 2019-08-04 19:35:31
    关于接口返回数据如何渲染在列表上 项目中的例子: 要渲染的几个列表: <!-- 加载图片,src前面一定要使用:--> <!-- 加载图片,src前面一定要使用:--> <!-- 加载图片,src前面一定要使用:-->...
  • python3 接口获取数据

    万次阅读 多人点赞 2018-12-06 13:59:12
    第一次了解到“通过接口获取数据”是在做一个项目时需要存储大量数据,而通过接口是传输大量数据最好的选择,因为它比导出csv文件,再保存至数据库的方法要更快捷、更方便。自己对接口学习了一段时间,对学到的东西...
  • jmeter beanshell 获取接口各种返回信息

    千次阅读 2020-01-03 17:49:42
    1、获取响应数据---ResponseData String RespMessageData = prev.getResponseDataAsString(); 2、获取响应头信息---ResponseHeaders //SampleResult需要import对象 import org.apache.jmeter.samplers....
  • python解析接口返回数据

    千次阅读 2019-12-09 11:36:05
    1、把json格式的数据,转换成单个{key,value}的形式,并把每个dict存入list def parse(self,data): #解析json格式的数据 ,生成list for key, value in data.items(): if isinstance(value, dict): self.parse...
  • 1.添加Spring注解支持, 通过注解使得接口可以成功返回一个字符串 添加AccountVo,并将AccountVo转换为JSON数据返回 Spring注解 没有注解的Spring框架是没有灵魂的! 上一章中,传统的SpringMVC的Controller只能...
  • HTTPClient获取接口数据返回JSON

    万次阅读 2018-05-29 14:32:17
    public static String getDataJson(String url, Integer pageNo, Integer pageSize, ...将字符串转化为JSON取数据: JSON.parseObject(httpResult.getResultString()).getJSONObject("result").getInteger("data")
  • ajax获取接口数据

    千次阅读 2019-08-26 18:08:21
    直接明了 直接上代码 $.ajax({ url: 'https://www.easy-mock.com/mock/5d6390b90915be18898ac4bd/Hani-ChenURL/test', //接口链接 ... // 如果获取成功 success: function(data) { //成功时返回的data值 conso...
  • 调用第三方接口时,由于返回数据量过大,在获取并转换数据时报错,大家有什么好的解决办法?报错代码:String resStr = EntityUtils.toString(response.getEntity());错误信息:java.net.SocketException: Socket ...
  • 1.methods () {getRemindNum () {this.getRemind({action: 'remind_number'}, res => {this.maintainReminds=res.data.maintainReminds||0this.measureReminds=res.data.measureReminds||0this.repairRem...
  • JAVA访问http接口得到返回数据

    千次阅读 2018-08-30 17:58:00
    // 获取所有响应头字段 // Map, List<String>> map = connection.getHeaderFields(); // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( ...
  • 发送HTTP请求,调取第三方接口 application/x-www-form-urlencoded 方式 /** * 发送http POST请求 * @param parameter为请求参数 * @return 远程响应结果 */ public static String sendPunlic2GPost...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,000,993
精华内容 400,397
关键字:

获取接口返回的数据