精华内容
下载资源
问答
  • 请求webAPI的几种方式

    2019-10-05 00:10:31
    参考:... 1. HttpClient 2.WebRequest 3. Ajax 最常用的请求方式是get/post, post请求需要传Httpcontent, 其实就是实体。 转载于:https://www.cnblogs.com/yulin10/p/11400504.html...

    参考:https://www.cnblogs.com/ck168/p/5652773.html

    1. HttpClient

    2. WebRequest

    3. Ajax

    最常用的请求方式是get/post, post请求需要传Httpcontent, 其实就是实体。

     

    转载于:https://www.cnblogs.com/yulin10/p/11400504.html

    展开全文
  • 2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源; 3、资源表现形式是XML或...

    一)RESTful简介

    定义:RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。

     

    RESTful特点

    1、每一个URI都是一个唯一资源标识符;

    2、客户端使用GETPOSTPUTDELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

    3、资源的表现形式是XML或HTML或JSON;

    4、客户端与服务端之间的交互在请求之间都是无状态的

     

    二)SpringMVC对RESTful的支持

    主要是通过注解来实现功能,如下:

    @Controller:声明一个处理请求的控制器

    @RequestMapping:请求映射地址到对应的方法,该注解又可以分为一下几种类型:

        @GetMapping:获取资源。

        @PostMpping:新建资源(也可以用于更新资源)。

        @PutMapping:更新资源,主要是用来更新整个资源的。

        @DeleteMapping:删除资源。

        @PatchMapping:更新资源,主要是用来执行某项操作更新资源的某些字段。

    @ResponsrBody:将响应内容转换为JSON格式。

    @RequestBody:请求内容转换为JSON格式。

    @RestContrller:等同于@Controller+@ResponsrBody注解。

     

    三)RESTful API统一返回值

    第一步:创建一个枚举类,存储业务逻辑的code和msg

    package com.oysept.bean;
    
    /**
     * 全局统一返回code与msg
     * @author ouyangjun
     */
    public enum CodeEnum {
    
        RESULT_CODE_SUCCESS("S0000000", "SUCCESS"),
        RESULT_CODE_FAIL("F0000000", "FAIL"),
        ;
    	
        private String code;
        private String msg;
        CodeEnum(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }
    	
        public String getCode() {return code;}
        public void setCode(String code) {this.code = code;}
    	
        public String getMsg() {return msg;}
        public void setMsg(String msg) {this.msg = msg;}
    }
    

     

    第二步:创建一个统一返回格式,包括状态码、返回消息、返回数据、返回时间(可自行扩展)

    package com.oysept.bean;
    
    import java.io.Serializable;
    import java.util.Date;
    
    /**
     * 全局返回Result
     * @author ouyangjun
     */
    public class Result<T> implements Serializable {
    	
        private static final long serialVersionUID = 1L;
    
        private String code;
        private String msg;
        private T data;
        private Date time;
    	
        public Result() {}
        public Result(CodeEnum codeenum, T data) {
            this.code = codeenum.getCode();
            this.msg = codeenum.getMsg();
            this.data = data;
            this.time = new Date();
        }
    	
        public Result(String code, String msg, T data) {
            this.code = code;
            this.msg = msg;
            this.data = data;
            this.time = new Date();
        }
    	
        public String getCode() {return code;}
        public void setCode(String code) {this.code = code;}
    	
        public String getMsg() {return msg;}
        public void setMsg(String msg) {this.msg = msg;}
    	
        public T getData() {return data;}
        public void setData(T data) {this.data = data;}
    	
        public Date getTime() {return time;}
        public void setTime(Date time) {this.time = time;}
    }
    

     

    第三步:创建一个实体类,用于传值

    package com.oysept.bean;
    
    import java.io.Serializable;
    
    public class ParamsVO implements Serializable {
    	
        private static final long serialVersionUID = 1L;
    
        private String id;
        private String name;
    	
        public String getId() {return id;}
        public void setId(String id) {this.id = id;}
    	
        public String getName() {return name;}
        public void setName(String name) {this.name = name;}
    }
    

     

    四)RESTful GET传参与返回值

    引入的类,下面GET和POST方法需要用到:

    package com.oysept.controller;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.oysept.bean.CodeEnum;
    import com.oysept.bean.ParamsVO;
    import com.oysept.bean.Result;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class RestfulController {
    	
        // GET 或 POST请求代码, 代码如下
    }

     

    GET请求可直接打开浏览器,直接输入地址访问,查看效果图。

    第一种:无参数GET请求

    // 访问地址: http://localhost:8080/restful/get/noParamsGET
    @RequestMapping(value="/restful/get/noParamsGET", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> noParamsGET() {
        String data = "noParamsGET,无参数GET请求";
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第二种:带参数GET请求,通过HttpServletRequest.getParameter("")方法获取参数

    // 访问地址: http://localhost:8080/restful/get/httprequestGET?id=666&name=ouyangjun
    @RequestMapping(value="/restful/get/httprequestGET", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> httprequestGET(HttpServletRequest request, HttpServletResponse response) {
        // 如果id为空, 会报空指针错误
        String id = request.getParameter("id");
        if (id == null || "".equals(id)) {
            return new Result<String>(CodeEnum.RESULT_CODE_FAIL, "id is null!");
        }
        String name = request.getParameter("name");
        String data = "requestGET, id: " + id + ", name: " + name;
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第三种:带参数GET请求,在路径中传值,参数名称需保持一致

    // 访问地址: http://localhost:8080/restful/get/oneParamsGET?id=666
    @RequestMapping(value="/restful/get/oneParamsGET", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> oneParamsGET(String id) {
        String data = "oneParamsGET, id: " + id;
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第四种:带参数GET请求,多个参数传值

    // 访问地址: http://localhost:8080/restful/get/twoParamsGET?id=111&name=oysept
    @RequestMapping(value="/restful/get/twoParamsGET", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> twoParamsGET(String id, String name) {
        String data = "id: " + id + ", name: " + name;
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第五种:GET请求,指定参数的名称,然后可以取别名

    // 访问地址: http://localhost:8080/restful/get/requestParamGET?id=111&name=oysept
    @RequestMapping(value="/restful/get/requestParamGET", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> requestParamGET(@RequestParam("id") String aaa, @RequestParam("name") String bbb) {
        String data = "aaa: " + aaa + ", bbb: " + bbb;
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第六种:GET请求,把参数作为路径中的一部分传值

    // 访问地址: http://localhost:8080/restful/get/666/ouyangjun
    @RequestMapping(value="/restful/get/{id}/{name}", method = RequestMethod.GET)
    @ResponseBody
    public Result<String> pathGET(@PathVariable("id") String aaa, @PathVariable("name") String bbb) {
        String data = "aaa: " + aaa + ", bbb: " + bbb;
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第七种:GET方式,form表单传值

    // 访问地址: http://localhost:8080/restful/get/noParamsObject
    @RequestMapping(value="/restful/get/noParamsObject", method = RequestMethod.GET)
    @ResponseBody
    public Result<ParamsVO> noParamsObject() {
        ParamsVO vo = new ParamsVO();
        vo.setId("123");
        vo.setName("GOOD");
        return new Result<ParamsVO>(CodeEnum.RESULT_CODE_SUCCESS, vo);
    }

     

    五)RESTful POST传参与返回值

    POST请求不能直接在地址栏访问,可借助Postman工具,网上很多这种http请求软件。

    第一种:POST无参数请求

    // 访问地址: http://localhost:8080/restful/post/noParamsPost
    @RequestMapping(value="/restful/post/noParamsPost", method = RequestMethod.POST)
    @ResponseBody
    public Result<String> noParamsPost() {
        String data = "noParamsPost,无参数POST请求";
        return new Result<String>(CodeEnum.RESULT_CODE_SUCCESS, data);
    }

     

    第二种:form表单,POST方式传值

    // 表单请求参数方式
    // 访问地址: http://localhost:8080/restful/post/reqFormPOST
    @RequestMapping(value="/restful/post/reqFormPOST", method = RequestMethod.POST)
    @ResponseBody
    public Result<ParamsVO> reqFormPOST(ParamsVO vo) {
        if (vo == null) {
            return new Result<ParamsVO>(CodeEnum.RESULT_CODE_FAIL, new ParamsVO());
        }
        return new Result<ParamsVO>(CodeEnum.RESULT_CODE_SUCCESS, vo);
    }

    效果图:

     

    第三种:JSON方式,POST请求集合参数

    // json方式
    // 访问地址: http://localhost:8080/restful/post/reqBodysParamsPOST
    @RequestMapping(value="/restful/post/reqBodysParamsPOST", method = RequestMethod.POST)
    @ResponseBody
    public Result<List<String>> reqBodysParamsPOST(@RequestBody List<String> ids) {
        if (ids == null || ids.size()==0) {
            return new Result<List<String>>(CodeEnum.RESULT_CODE_FAIL, new ArrayList<String>());
        }
        return new Result<List<String>>(CodeEnum.RESULT_CODE_SUCCESS, ids);
    }

     

    第四种:JSON方式,POST请求对象参数

    // json方式
    // 访问地址: http://localhost:8080/restful/post/reqBodysObjectPOST
    @RequestMapping(value="/restful/post/reqBodysObjectPOST", method = RequestMethod.POST)
    @ResponseBody
    public Result<ParamsVO> reqBodysObjectPOST(@RequestBody ParamsVO vo) {
        if (vo == null) {
            return new Result<ParamsVO>(CodeEnum.RESULT_CODE_FAIL, new ParamsVO());
        }
        return new Result<ParamsVO>(CodeEnum.RESULT_CODE_SUCCESS, vo);
    }

    效果图:

     

    六)重定向和请求转发

    项目启动之后,可直接在浏览器输入地址进行访问。

    package com.oysept.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class LocationController {
        
        // 重定向地址
        @RequestMapping("/restful/returnMessage")
        @ResponseBody
        public String returnMessage () {
            return "测试重定向or请求转发, 返回message!";
        }
    
        // 测试请求转发地址: http://localhost:8080/restful/forward/req
        @RequestMapping("/restful/forward/req")
        public String forwardReq () {
            // 地址之间不能有空格
            return "forward:/restful/returnMessage";
        }
        
        // 测试重定向地址: http://localhost:8080/restful/redirect/req
        @RequestMapping("/restful/redirect/req")
        public String redirectReq () {
            // 地址之间不能有空格
            return "redirect:/restful/returnMessage";
        }
    }
    

     

    七)附件下载方式

    该方式适合各种字节流对文件进行远程下载,http或https的地址都可以。

    第一步:传入HttpServletResponse对象。

    第二步:设置附件信息,比如附件名、附件编码等。

    第三步:获取附件的ContentType类型,附件下载时,需要指定转换成的文件类型。(已列举常用类型)

    第四步:通过http或https获取远程附件流。

    第五步:把附件下载到本地指定路径。

    源码:

    package com.oysept.controller;
    
    import com.oysept.bean.ParamsVO;
    import org.springframework.http.MediaType;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLDecoder;
    
    @Controller
    public class DownloadController {
        
        // 返回响应报文, 适合各种类型文件下载
        // 请求地址: http://localhost:8080/restful/file/download
        @RequestMapping(value = "/restful/file/download", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public void urlDownload(@RequestBody ParamsVO vo, HttpServletResponse response) {
            // 打印对象中的参数信息
            System.out.println("id: " + vo.getId() + ", name: " + vo.getName());
            try {
                String filename = "baidu.html";
                // 设置附件信息,fileName中如果包含中文,可能会出现乱码
                response.setHeader("Content-disposition", "attachment; filename=" + URLDecoder.decode(filename, "UTF-8"));
                response.setCharacterEncoding("utf-8");
                response.setContentType(getResponseContentType("html")); // 不同的文件类型,有不同的ContentType, 如需动态指定类型, 可截取附件的后缀
    			
                BufferedInputStream bufferInput = null; // 字节缓存输入流
                BufferedOutputStream bufferOutput = null; // 字节缓存输出流
                try {
                    InputStream in = getHttpInputStream("https://www.baidu.com/", "GET");
                    bufferInput = new BufferedInputStream(in);
    		    	
                    OutputStream out = response.getOutputStream();
                        bufferOutput = new BufferedOutputStream(out);
    				
                    int l = -1;
                    byte[] tmp =new byte[1024];
                    while ((l = bufferInput.read(tmp)) != -1) {
                        bufferOutput.write(tmp, 0, l);
                    }
                } catch (FileNotFoundException e) {
                    System.out.println("/restful/file/download!" + e);
                } catch (IOException e) {
                    System.out.println("/restful/file/download!" + e);
                } finally {
                    // 关闭低层流。
                    try {
                        if (bufferInput != null) {
                            bufferInput.close();
                        }
                        if (bufferOutput != null){
                            bufferOutput.close();
                        }
                    } catch (IOException e) {
                        System.out.println("/restful/file/download!" + e);
                    }
                }
            } catch (UnsupportedEncodingException e) {
                System.out.println("/restful/file/download!" + e);
            }
        }
        
        /**
         * 获取HttpServletResponse设置的ContentType参数
         * @return
         */
        public String getResponseContentType(String type) {
            String contentType = null;
            if ("xlsx,xls,docx,doc,pptx,ppt,dotx,docm,dotm,xltx,xlsm,xltm,xlam,xlsb,potx,ppsx,ppam,pptm,potm,ppsm,xlt,xla,pot,pps,ppa"
    				.contains(type)) {
                // 附件header处理
                if("xlsx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
                } else if("xls".equals(type) || "xlt".equals(type) || "xla".equals(type)) {
                    contentType = "application/vnd.ms-excel;charset=utf-8";
                } else if("docx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8";
                } else if("doc".equals(type) || "dot".equals(type)) {
                    contentType = "application/msword;charset=utf-8";
                } else if("pptx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.presentationml.presentation;charset=utf-8";
                } else if("ppt".equals(type) || "pot".equals(type) || "pps".equals(type) || "ppa".equals(type)) {
                    contentType = "application/vnd.ms-powerpoint;charset=utf-8";
                } else if("dotx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.template;charset=utf-8";
                } else if("docm".equals(type)) {
                    contentType = "application/vnd.ms-word.document.macroEnabled.12;charset=utf-8";
                } else if("dotm".equals(type)) {
                    contentType = "application/vnd.ms-word.template.macroEnabled.12;charset=utf-8";
                } else if("xltx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.template;charset=utf-8";
                } else if("xlsm".equals(type)) {
                    contentType = "application/vnd.ms-excel.sheet.macroEnabled.12;charset=utf-8";
                } else if("xltm".equals(type)) {
                    contentType = "application/vnd.ms-excel.template.macroEnabled.12;charset=utf-8";
                } else if("xlam".equals(type)) {
                    contentType = "application/vnd.ms-excel.addin.macroEnabled.12;charset=utf-8";
                } else if("xlsb".equals(type)) {
                    contentType = "application/vnd.ms-excel.sheet.binary.macroEnabled.12;charset=utf-8";
                } else if("potx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.presentationml.template;charset=utf-8";
                } else if("ppsx".equals(type)) {
                    contentType = "application/vnd.openxmlformats-officedocument.presentationml.slideshow;charset=utf-8";
                } else if("ppam".equals(type)) {
                    contentType = "application/vnd.ms-powerpoint.addin.macroEnabled.12;charset=utf-8";
                } else if("pptm".equals(type)) {
                    contentType = "application/vnd.ms-powerpoint.presentation.macroEnabled.12;charset=utf-8";
                } else if("potm".equals(type)) {
                    contentType = "application/vnd.ms-powerpoint.template.macroEnabled.12;charset=utf-8";
                } else if("ppsm".equals(type)) {
                    contentType = "application/vnd.ms-powerpoint.slideshow.macroEnabled.12;charset=utf-8";
                }
            } else if ("txt".equals(type)) {
                contentType = "text/plain;charset=utf-8";
            } else if ("pdf".equals(type)) {
                contentType = "application/pdf;charset=utf-8";
            } else if ("png".equals(type)) {
                contentType = "image/png;charset=utf-8";
            } else if ("jpg".equals(type) || "jpeg".equals(type)) {
                contentType = "image/jpeg;charset=utf-8";
            } else if ("bmp".equals(type)) {
                contentType = "application/x-bmp;charset=utf-8";
            } else if ("gif".equals(type)) {
                contentType = "image/gif;charset=utf-8";
            } else if ("html".equals(type) || "htm".equals(type)) {
                contentType = "text/html;charset=utf-8";
            } else if ("xml".equals(type)) {
                contentType = "text/xml;charset=utf-8";
            } else if ("css".equals(type)) {
                contentType = "text/css;charset=utf-8";
            } else if ("js".equals(type)) {
                contentType = "application/x-javascript;charset=utf-8";
            } else if ("eml".equals(type)) {
                contentType = "message/rfc822;charset=utf-8";
            } else if ("xlw".equals(type)) {
                contentType = "application/x-xlw;charset=utf-8";
            } else if ("ai".equals(type)) {
                contentType = "application/postscript;charset=utf-8";
            } else if ("rtf".equals(type)) {
                contentType = "application/msword;charset=utf-8";
            } else if ("mp4".equals(type)) {
                contentType = "video/mpeg4;charset=utf-8";
            } else if ("tif".equals(type) || "tiff".equals(type)) {
                contentType = "image/tiff;charset=utf-8";
            } else if ("exe".equals(type)) {
                contentType = "application/x-msdownload;charset=utf-8";
            } else if ("pls".equals(type)) {
                contentType = "audio/scpls;charset=utf-8";
            } else if ("rpm".equals(type)) {
                contentType = "audio/x-pn-realaudio-plugin;charset=utf-8";
            } else if ("mht".equals(type)) {
                contentType = "message/rfc822;charset=utf-8";
            }
            return contentType;
        }
        
        /**
         * http获取InputStream
         * @param requestUrl: 请求路径
         * @param requestMethod: 请求方式(GET、POST)
         * @return
         */
        public InputStream getHttpInputStream(String requestUrl, String requestMethod) {
            HttpURLConnection con = null;
            InputStream is = null;
            try {
                URL url = new URL(requestUrl);
                // 原生访问http请求,未代理请求
                con = (HttpURLConnection) url.openConnection();
                con.setDoOutput(true);
                con.setDoInput(true);
                con.setUseCaches(false);
                con.setRequestMethod(requestMethod);
                con.setReadTimeout(60000);
                con.setConnectTimeout(60000);
                con.connect();
                // 获取InputStream
                is = con.getInputStream();
                return is;
            } catch (IOException e) {
                System.out.println("getHttpInputStream error!" + e);
            }
            return null;
        }
    }
    

     

    识别二维码关注个人微信公众号

    本章完结,待续,欢迎转载!
     
    本文说明:该文章属于原创,如需转载,请标明文章转载来源!

    展开全文
  • Request获取请求信息-常用API

    千次阅读 2018-09-22 09:29:18
    String getMethod() 获取请求方式的类型 String getRequestURI() 获取请求行中资源名部分(相对路径) StringBuffer getRequestURL() 获取客户端发出请求完整URL(绝对路径) toString String ...

     request获取请求行信息

    • String getMethod()      获取请求方式的类型
    • String getRequestURI()     获取请求行中的资源名部分(相对路径)
    • StringBuffer getRequestURL()    获取客户端发出请求完整URL(绝对路径)  toString
    • String getContextPath() 获得访问的根路径
    • String getRemoteAddr() 获得远程主机IP地址
    • String getScheme()   获得协议
    • String getServerName()   获得域名
    • String getLocalPort() 获得端口
    • String getServletPath() 获得访问资源的路径
    • String getQueryString() 获得请求的参数
    • String getProtocol() 获得协议版本

     request获取请求头信息

    • Enumeration getHeaderNames() 返回此请求包含的所有头名称的枚举  

                    Enumeration是Iterator的前身

    • String getHeader(String name) 以String 的形式返回指定请求头的值
    1.  user‐agent:将浏览器和本机的信息发送给服务器(浏览器兼容)
    2. referer:当前访问资源的上一个资源(防盗链)
    展开全文
  • post请求常用的几种方式,记录一下 func httpPost() { resp, err := http.Post("https://www.abcd123.top/api/v1/login", "application/x-www-form-urlencoded", strings.NewReader("username=test&pa.

    转载自 https://blog.csdn.net/mofiu/article/details/79925994

    post请求常用的几种方式,记录一下

    func httpPost() {
        resp, err := http.Post("https://www.abcd123.top/api/v1/login",
            "application/x-www-form-urlencoded",
            strings.NewReader("username=test&password=ab123123"))
        if err != nil {
            fmt.Println(err)
        }
    
        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            // handle error
        }
    
        fmt.Println(string(body))
    }
    
    func httpPostForm() {
        resp, err := http.PostForm("https://www.denlery.top/api/v1/login",
            url.Values{"username": {"auto"}, "password": {"auto123123"}})
        if err != nil {
            // handle error
        }
        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            // handle error
        }
        fmt.Println(string(body))
    
    }
    
    func httpPostJson() {
        jsonStr :=[]byte(`{ "username": "auto", "password": "auto123123" }`)
        url:= "https://www.denlery.top/api/v1/login"
        req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
        req.Header.Set("Content-Type", "application/json")
    
        client := &http.Client{}
        resp, err := client.Do(req)
        if err != nil {
            // handle error
        }
        defer resp.Body.Close()
    
        statuscode := resp.StatusCode
        hea := resp.Header
        body, _ := ioutil.ReadAll(resp.Body)
        fmt.Println(string(body))
        fmt.Println(statuscode)
        fmt.Println(hea)
    
    }
    展开全文
  • 详解ASP.NET Core API 的Get和Post请求使用方式 原文:详解ASP.NET Core API 的Get和Post请求使用方式 ...所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐...
  • Consul注册中心常用的API

    千次阅读 2019-06-25 09:47:00
    问题 在使用Consul注册中心的过程中,涉及到服务注册,服务注销,服务列表查询,检查点列表查询,检查点注销等等Http的API。...请求方式:PUT 请求URL:http://localhost:8500/v1/agent/service/reg...
  • 使用jquery封装了三种常用的请求方式 const appendUrl = function (suffix) { return "http://localhost:8011" + suffix; }; //form get const get = function (url, body, suc) { $.ajax({ url:...
  • 1、通过JDK网络类Java.net.URLConnection (1)api (2)使用: GET: 1、创建远程连接 ... connection = (HttpURLConnection) url.openConnection();... // 设置通用的请求属性 connection.
  • 关于 RESTFUL API 常用认证方式

    千次阅读 2018-11-17 17:35:29
    ...由于HTTP协议是无状态,所有每次请求都得带上身份信息,基于Http basic验证就是简单将用户名和密码base64编码放到header中,一般需要HTTPS,安全性较低,实现的方式可以基于代码实现也可...
  • 常用API接口集合

    2020-07-04 23:15:46
    不知道叫啥的api-------知道了,叫博天api 在线接口测试 在线格式化JSNO工具 天气预报代码_天气预报插件_免费天气预报代码(插件)调用——天气网 今日诗词 - 一言API 博客参考–获取必应每日壁纸(api) 获取...
  • 微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。...本文内容就整理些常用的的微信开发API,可以了解下。package cn.vision.weixinde...
  • 微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。...本文内容就整理些常用的的微信开发API,可以了解下。package cn.vision.weixinde...
  • 开发人员可以使用cURL来测试API接口,查看响应头和发出HTTP请求。在本文中,我们将解释如何使用cURL发出POST请求。HTTP POST方法用于将数据发送到远程服务器发出POST请求curl 发出POST请求的命令一般形式如...
  • 开发人员可以使用cURL来测试API接口,查看响应头和发出HTTP请求。在本文中,我们将解释如何使用cURL发出POST请求。HTTP POST方法用于将数据发送到远程服务器发出POST请求curl 发出POST请求的命令一般形式如...
  • 一、常用的数据请求方式 JS原生实现 第一种: let xhr=new XMLHttpRequest() xhr.open() xhr.send() 第二种:fetch() 支持promise fetch('接口地址') .then(function(response) { return response.json()...
  • 正文共:8723字预计阅读时间:22分钟前言之前在学习 React Hooks 过程中,看到一篇外网文章,通过 Hooks 来...虽然是去年文章,在阅读之后一下子就掌握了 Hooks 使用方式,而且数据请求是在业务代码中很常用...
  • 开发人员可以使用cURL来测试API接口,查看响应头和发出HTTP请求。在本文中,我们将解释如何使用cURL发出POST请求。HTTP POST方法用于将数据发送到远程服务器发出POST请求curl 发出POST请求的命令一般形式如...
  • java常用的HttpURLConnection 方式发送http请求的工具方法 需要的jar包有jsp-api.jar 、servlet-api.jar 、dom4j.jarpackage cn.geobeans.fwzx.util;import javax.servlet.http.HttpServletRequest; import java.io...
  • 前言之前在学习 React Hooks 的过程中,看到一篇外网文章,通过 Hooks 来...虽然是去年的文章,在阅读之后一下子就掌握了 Hooks 的使用方式,而且数据请求是在业务代码中很常用的逻辑。Vue 3 已经发布一段时间了,其...
  • 常用API接口签名验证参考

    千次阅读 2019-01-11 15:42:00
    常用API接口签名验证参考 ...项目中常用的API接口签名验证方法: 1. 给app分配对应的key、secret2. Sign签名,调用API 时需要对请求参数进行签名验证,签名方式如下: a. 按照请求参数名称将所有请求参数按...
  • 较之开发者常用的获取语音识别功能的方法,本方法最大的优势是轻量级,不需要在所开发的应用中集成任何SDK开发工具包,也不需要在测试机中添加任何识别引擎软件,开发者只要了解Http网络请求以及百度语音识别 REST ...
  • 开发人员可以使用cURL来测试API接口,查看响应头和发出HTTP请求。在本文中,我们将解释如何使用cURL发出POST请求。HTTP POST方法用于将数据发送到远程服务器发出POST请求curl 发出POST请求的命令一般形式如...
  • HttpServletRequest API 常用功能 1、获取请求方式 2、获取url路径 3、获取web应用名称(虚拟目录) 4、获取请求ip地址 5、获取get请求表单数据 举例如下: String method = req.getMethod(); System.out....
  • 微信API整理(1)——微信常用API

    千次阅读 2018-08-02 11:55:19
    整理一下微信API文档,以备未来开发,本文API内容为常用的微信开发API整理,内容有待完善...... package cn.vision.weixindemo.utils.base.API; public class WeiXin_API { // 授权类 /** * 获取授权Token *...
  • 最近在学习spring cloud 不但对JAVA微服务架构有了些许了解在动手编写微服务架构时候,接触到了 restful api 编写。...本人实测了两个常用请求方式GET 和 POSTGET呢就不说了这个跟传统差不多,在操作POS
  • 常用的Flink Rest API接口使用

    千次阅读 2020-05-28 13:42:44
    请求方式:POST 请求参数: 设置请求头 application/java-archive 返回结果: { "status": "success", "filename": "d750fe29-7d5b-404f-a984-d0690f35ea6e_flink-4.jar" } 请求实例: 提交任务接口 请求...
  • 出处:https://blog.csdn.net/zrg523/article/details/82185088在开发高并发系统时有三把利器用来保护系统:...需要暂时屏蔽掉,待高峰或者问题解决后再打开- **限流**限流目的是通过对并发访问/请求进行限速,或...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 856
精华内容 342
热门标签
关键字:

常用的api请求方式