精华内容
下载资源
问答
  • 外部接口和内部接口区别

    万次阅读 多人点赞 2019-06-04 08:06:29
    例如:我们自己开发系统调用调用微信或支付宝支付接口,微信或支付宝供我们调用的接口为外部接口,外部接口需要,覆盖各种正常和异常情况。 内部接口 对自身系统提供的接口(供系统内部调用的接口) 一般为了尽早的...

    外部接口
    对外部提供的接口(提供给第三方使用的接口)
    例如:我们自己开发系统调用调用微信或支付宝支付接口,微信或支付宝供我们调用的接口为外部接口,外部接口需要覆盖各种正常和异常情况。

    内部接口
    对自身系统提供的接口(供系统内部调用的接口)
    一般为了尽早的介入测试,所以一般接口开发完成测试人员就可以进行内部接口测试。一般大公司可能要求比较高,需要考虑安全问题,那么内部接口测试也是一定要测的。对于小公司都是不对内部接口进行测试的,直接在UI层测试即可。这样做的原因是为了防止攻击者会绕过前端的验证直接对接口进行攻击,那么后端接口的验证也是必不可少的。

    展开全文
  • 调用外部接口

    千次阅读 2017-02-28 16:01:38
    手里有一个项目,有一个功能是需要调用其他外部接口,之前自己也没有高过这个方面的知识,就在网上找了一些资料,这边文章感觉很不错,于是自己动手做了测试,发现很完美通过,但是项目至今还没有用上,效果还有待...

     手里有一个项目,有一个功能是需要调用其他外部接口,之前自己也没有高过这个方面的知识,就在网上找了一些资料,这边文章感觉很不错,于是自己动手做了测试,发现很完美通过,但是项目至今还没有用上,效果还有待考验。

    这是工具类

    1. package com.dufy.http;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.InputStream;  
    5. import java.io.InputStreamReader;  
    6. import java.io.OutputStreamWriter;  
    7. import java.net.HttpURLConnection;  
    8. import java.net.URL;  
    9. import java.util.Map;  
    10.   
    11. /** 
    12.  * @author dufy 
    13.  * @description Http的Post和Get请求方式 
    14.  * @creation 2017年1月12日   
    15.  * @QQ : 742981086  
    16.  */  
    17. public class TestHttpRequest {  
    18.       
    19.     /** 
    20.      * http get请求方式 
    21.      * @param urlStr 
    22.      * @param params 
    23.      * 
    24.     **/  
    25.     public static String get(String urlStr,Map<String,String> params){  
    26.         InputStream is = null;  
    27.         BufferedReader reader = null;  
    28.         String resultStr ="";  
    29.         try {  
    30.             String paramsStr = "";  
    31.             for(String param : params.keySet()){  
    32.                 paramsStr += "&" + param + "=" + params.get(param);  
    33.             }  
    34.             if(!paramsStr.isEmpty()){  
    35.                 paramsStr = paramsStr.substring(1);  
    36.                 urlStr += "?" + paramsStr;  
    37.             }  
    38.             URL url = new URL(urlStr);  
    39.             HttpURLConnection httpCon = (HttpURLConnection) url  
    40.                     .openConnection();  
    41.             httpCon.setRequestMethod("GET");  
    42.             is = httpCon.getInputStream();  
    43.    
    44.             reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));  
    45.             StringBuilder sb = new StringBuilder();  
    46.             String line = null;  
    47.             while ((line = reader.readLine()) != null) {     
    48.                 sb.append(line);     
    49.             }  
    50.             resultStr = sb.toString();  
    51.            
    52.         } catch (Exception e) {  
    53.             e.printStackTrace();  
    54.                
    55.         } finally {  
    56.             try {  
    57.                 if(reader!=null)reader.close();  
    58.                 if(is!=null)is.close();  
    59.             } catch (Exception e) {  
    60.                 e.printStackTrace();  
    61.             }  
    62.         }  
    63.         return resultStr;  
    64.     }  
    65.       
    66.     /** 
    67.      * http post请求方式 
    68.      * @param urlStr 
    69.      * @param params 
    70.      * 
    71.     **/  
    72.     public static String post(String urlStr,Map<String,String> params){  
    73.          URL connect;  
    74.          StringBuffer data = new StringBuffer();    
    75.          try {    
    76.              connect = new URL(urlStr);    
    77.              HttpURLConnection connection = (HttpURLConnection)connect.openConnection();    
    78.              connection.setRequestMethod("POST");    
    79.              connection.setDoOutput(true);   
    80.              connection.setDoInput(true);  
    81.              connection.setRequestProperty("accept""*/*");  
    82.              connection.setRequestProperty("connection""Keep-Alive");  
    83.              connection.setRequestProperty("user-agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");  
    84.              OutputStreamWriter paramout = new OutputStreamWriter(    
    85.                      connection.getOutputStream(),"UTF-8");   
    86.             String paramsStr = "";  
    87.             for(String param : params.keySet()){  
    88.                 paramsStr += "&" + param + "=" + params.get(param);  
    89.             }  
    90.             if(!paramsStr.isEmpty()){  
    91.                 paramsStr = paramsStr.substring(1);  
    92.             }  
    93.              paramout.write(paramsStr);    
    94.              paramout.flush();    
    95.              BufferedReader reader = new BufferedReader(new InputStreamReader(    
    96.                      connection.getInputStream(), "UTF-8"));    
    97.              String line;                
    98.              while ((line = reader.readLine()) != null) {            
    99.                  data.append(line);              
    100.              }    
    101.              
    102.              paramout.close();    
    103.              reader.close();    
    104.          } catch (Exception e) {    
    105.              // TODO Auto-generated catch block    
    106.              e.printStackTrace();    
    107.          }    
    108.         return data.toString();  
    109.     }  

    这是我自己东说做的测试方法



    亲测有效 可以结合框架来做




    展开全文
  • Java 访问 http 外部接口

    千次阅读 2019-06-05 16:05:36
    由于需求需要在后台访问 其他外部接口 所以写了个方法 首先添加maven依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId>...

    由于需求需要在后台访问 其他外部接口 所以写了个方法
    首先添加maven依赖

    		<dependency>
    		    <groupId>org.apache.httpcomponents</groupId>
    		    <artifactId>httpclient</artifactId>
    		    <version>4.5.5</version>
    	   </dependency>
            
    

    Service

    import org.springframework.http.HttpMethod;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Service;
    import org.springframework.web.client.RestTemplate;
    
    /** 
    * @author  作者 : 小布
    * @version 创建时间 : 2019年6月5日 下午3:42:49 
    * @explain 类说明 : 
    */
    @Service
    public class HttpService {
    
    	public String httpRequest(String url,HttpMethod method){
    		RestTemplate template = new RestTemplate();
    		ResponseEntity<String> response = template.getForEntity(url, String.class);
    		return response.getBody();
    	}
    	
    }
    

    Controller

    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpMethod;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    
    /** 
    * @author  作者 : 小布
    * @version 创建时间 : 2019年6月5日 下午3:42:29 
    * @explain 类说明 : 
    */
    @CrossOrigin(origins = "*", maxAge = 3600)
    @RestController
    @Api(tags = "外部相关接口")
    @RequestMapping("/http")
    public class HttpController {
    
    	@Autowired
    	private HttpService httpService;
    	
    	@PostMapping("/httpRequestTest")
        @ApiOperation(value="测试外部接口")
    	public String httpRequestTest(@RequestBody Map<String, Object> map){
    		return httpService.httpRequest((String)map.get("url"), HttpMethod.GET);
    	} 
    	
    }
    

    测试结果
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • springboot 调用外部接口

    千次阅读 2020-04-01 09:45:06
    一、简介 在Spring-Boot项目开发中,存在着本模块的...二、Spring-Boot项目中访问外部接口 2.1 方案一 采用原生的Http请求 在代码中采用原生的http请求,代码参考如下: @RequestMapping("/doPostGetJson") pu...

    一、简介

    在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求,针对这一需求目前存在着三种解决方案,下面将对这三种方案进行整理和说明。

    二、Spring-Boot项目中访问外部接口

    2.1 方案一 采用原生的Http请求

    在代码中采用原生的http请求,代码参考如下:

    @RequestMapping("/doPostGetJson")

    public String doPostGetJson() throws ParseException {

      //此处将要发送的数据转换为json格式字符串

      String jsonText = "{id:1}";

      JSONObject json = (JSONObject) JSONObject.parse(jsonText);

      JSONObject sr = this.doPost(json);

      System.out.println("返回参数:" + sr);

      return sr.toString();

    }

    public static JSONObject doPost(JSONObject date) {

      HttpClient client = HttpClients.createDefault();

      // 要调用的接口方法

      String url = "http://192.168.1.101:8080/getJson";

      HttpPost post = new HttpPost(url);

      JSONObject jsonObject = null;

      try {

          StringEntity s = new StringEntity(date.toString());

          s.setContentEncoding("UTF-8");

          s.setContentType("application/json");

          post.setEntity(s);

          post.addHeader("content-type", "text/xml");

          HttpResponse res = client.execute(post);

          String response1 = EntityUtils.toString(res.getEntity());

          System.out.println(response1);

          if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

            String result = EntityUtils.toString(res.getEntity());// 返回json格式:

            jsonObject = JSONObject.parseObject(result);

          }

      } catch (Exception e) {

          throw new RuntimeException(e);

      }

      return jsonObject;

    }

     

    2.2 方案二 采用Feign进行消费

    1、在maven项目中添加依赖

    <dependency>

          <groupId>org.springframework.cloud</groupId>

          <artifactId>spring-cloud-starter-feign</artifactId>

          <version>1.2.2.RELEASE</version>

    </dependency>

     

    2、编写接口,放置在service层

    @FeignClient(url = "${decisionEngine.url}",name="engine")

    public interface DecisionEngineService {

      @RequestMapping(value="/decision/person",method= RequestMethod.POST)

      public JSONObject getEngineMesasge(@RequestParam("uid") String uid,@RequestParam("productCode") String productCode);

    }

     

    这里的decisionEngine.url 是配置在properties中的 是ip地址和端口号

    decisionEngine.url=http://10.2.1.148:3333

    /decision/person 是接口名字

    3、在Java的启动类上加上@EnableFeignClients

    @EnableFeignClients //参见此处

    @EnableDiscoveryClient

    @SpringBootApplication

    @EnableResourceServer

    public class Application  implements CommandLineRunner {

        private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);

        @Autowired

        private AppMetricsExporter appMetricsExporter;

        @Autowired

        private AddMonitorUnitService addMonitorUnitService;

        public static void main(String[] args) {

            new SpringApplicationBuilder(Application.class).web(true).run(args);

        }   

    }

     

    4、在代码中调用接口即可

    @Autowired

        private DecisionEngineService decisionEngineService ;

        decisionEngineService.getEngineMesasge("uid" ,  "productCode");

     

    2.3、方案三 采用RestTemplate方法

    在Spring-Boot开发中,RestTemplate同样提供了对外访问的接口API,这里主要介绍Get和Post方法的使用。Get请求提供了两种方式的接口getForObject 和 getForEntity,getForEntity提供如下三种方法的实现。

    Get请求之——getForEntity(Stringurl,Class responseType,Object…urlVariables)

    该方法提供了三个参数,其中url为请求的地址,responseType为请求响应body的包装类型,urlVariables为url中的参数绑定,该方法的参考调用如下:

    //http://USER-SERVICE/user?name={1}

    getForEntity("http://USER-SERVICE/user?name={1}",String.class,"didi")

     

    Get请求之——getForEntity(String url,Class responseType,Map urlVariables)

    该方法提供的参数中urlVariables的参数类型使用了Map类型,因此在使用该方法进行参数绑定时需要在占位符中指定Map中参数的key值,该方法的参考调用如下:

    // http://USER-SERVICE/user?name={name)

    RestTemplate restTemplate=new RestTemplate();

    Map<String,String> params=new HashMap<>();

    params.put("name","dada");  //

    ResponseEntity<String> responseEntity=restTemplate.getForEntity("http://USERSERVICE/user?name={name}",String.class,params);

     

    Get请求之——getForEntity(URI url,Class responseType)

    该方法使用URI对象来替代之前的url和urlVariables参数来指定访问地址和参数绑定。URI是JDK java.net包下的一个类,表示一个统一资源标识符(Uniform Resource Identifier)引用。参考如下:

    RestTemplate restTemplate=new RestTemplate();

    UriComponents uriComponents=UriComponentsBuilder.fromUriString(

    "http://USER-SERVICE/user?name={name}")

    .build()

    .expand("dodo")

    .encode();

    URI uri=uriComponents.toUri();

    ResponseEntity<String> responseEntity=restTemplate.getForEntity(uri,String.class).getBody();

     

    Get请求之——getForObject

    getForObject方法可以理解为对getForEntity的进一步封装,它通过HttpMessageConverterExtractor对HTTP的请求响应体body内容进行对象转换,实现请求直接返回包装好的对象内容。getForObject方法有如下:

    getForObject(String url,Class responseType,Object...urlVariables)

    getForObject(String url,Class responseType,Map urlVariables)

    getForObject(URI url,Class responseType)

     

    Post请求提供有三种方法,postForEntity、postForObject和postForLocation。其中每种方法都存在三种方法,postForEntity方法使用如下:

    RestTemplate restTemplate=new RestTemplate();

    User user=newUser("didi",30);

    ResponseEntity<String> responseEntity=restTemplate.postForEntity("http://USER-SERVICE/user",user,String.class); //提交的body内容为user对象,请求的返回的body类型为String

    String body=responseEntity.getBody();

     

    postForEntity存在如下三种方法的重载

    postForEntity(String url,Object request,Class responseType,Object... uriVariables)

    postForEntity(String url,Object request,Class responseType,Map uriVariables)

    postForEntity(URI url,Object request,Class responseType)

     

    展开全文
  • JAVA 调用外部接口

    万次阅读 2020-08-04 08:57:25
    系统需要调用guo wai一个接口,由于调用的guowai接口需要通过proxy请求 现在有3个方案 1.使用proxy进行http请求 2.直接使用guo wai服务器部署项目 3.使用HK服务器作为中介获取返回数据 1:问题,代理不稳定 2:...
  • matlab外部接口简介

    千次阅读 2011-09-19 10:47:40
    1、MATLAB外部接口主要包括3部分内容: (1)、MEX文件:外部程序调用接口; MEX文件是MATLAB解释器可以自动加载和运行的动态链接过程,MATLAB可以像调用内部函数一样调用它们。用户通过MEX文件可以完成以下功能: ...
  • Java调用外部接口

    万次阅读 2018-08-03 15:18:15
    进行java的C/S软件开发时,...如果是一个POST接口,就需要使用如POSTMAN或浏览器自带插件等等方式来进行一个接口的请求。 转化成代码也是如此。 下面是一个简单的POST接口调用实例: P:param参数可使用JSONObj...
  • nodejs EGG curl 请求外部接口

    千次阅读 2020-03-19 11:10:09
    使用nodejs开发时,有时需要调用外部接口,nodejs接口中有https模块支持,不过如果你使用了EGG框架,curl方法更方便使用 简单使用方法: var data = await this.ctx.curl('http:xxx.com/api'); 上面的示例是GET方式...
  • Spring Boot - 访问外部接口 在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如调用外部的地图API或者天气API。 Spring Boot - 访问外部接口 方案一: 采用原生的...
  • 外部接口 暴露在外部的接口(提供给第三方使用的接口),测试人员必须对外部接口做接口测试,覆盖各种正常、异常情况。 例如京东调用微信支付接口。微信在提供这个接口给京东的时候,是需要进行测试通过的。 内部...
  • 最近在开发一个项目,需要将对象转成json,然后调用外部接口上报数据。 外部接口返回json数据 { "id": "xxx", // 上报成功时id才有数据 "code": "xxx", // 0代表上报成功,其他代表错误 "message": "xxx" // ...
  • SpringCloud Feign HTTPS请求外部接口

    千次阅读 2019-05-29 16:43:08
    项目需要调用外部接口,外部资金方的接口安全性较高,有如下要求: 使用HTTPS调用, 对请求报文进行算法签名,签名后结果需要添加到请求parameter中 生成一个 32 位的随机字符串 nonce,将 各个请求参数连同 ...
  • Webservice实现调用外部接口

    千次阅读 2019-06-25 18:35:31
    经过学习可以了解到:webservice是可以跨平台,跨开发语言去实现客户端去调用服务端接口,从而达到数据的交换传输。 有篇文章有句话总结得很好:抄录自https://www.cnblogs.com/xdp-gacl/p/4048937.html(侵删): ...
  • 在项目开发中经常会遇到需要调用第三方或者客户的外部接口获取相关数据。那么如何在C#后端访问接口并获取返回的数据呢?我们可以使用HttpWebRequest实现对外部接口的访问。先写一个不带参数调用接口获取接口返回的...
  • 写C++ DLL时需要写的外部接口头文件

    千次阅读 2017-03-09 14:02:30
    #ifndef WAVELET2D_H #define WAVELET2D_H #include #include ...2,在编写DLL的时候,在项目属性--》c/c++ ---》预... EXPORT "对外接口" @1 5,两种方式使用其一就可以了。避免出现多种调用。
  • 【JAVA WEB】使用HTTPS请求外部接口

    千次阅读 2017-02-25 15:36:02
    如何使用HTTPS请求外部接口
  • 微服务并行调用多个外部接口

    千次阅读 2019-10-17 10:55:37
    例如, 在一个线程中并发请求多个其他外部接口, 一个折中的方案 既用到了当前线程, 又用到了线程池, 给当前线程加上了翅膀/辅助。 、 // coreSize 16 任务队列最长64, 当超出64, 创建新的线程,非核心线程最长...
  • node请求外部接口的方法

    千次阅读 2019-02-23 18:22:57
    在学习node的过程中一开始都是在处理外部的请求,但是如果碰到第三方接口的请求怎么办呢? 这里有两种方法。一种是node原生request请求一种是引用koa2-request中间件的方法。 node原生request请求 这里我们分为...
  • IDEA中WebService生成Java代码并调用外部接口实现通过wsdl文件生成java代码调用外部接口 最近一个Spring项目中需要调用其他第三方系统的接口对接数据,对方只给了一个wsdl地址,我们需要根据给的wsdl地址,自己来...
  • 介于保密的原因,外部接口就不公开了。我的需求是根据第三方提供的接口,查询数据。但是我的请求是包含了sql语句的。类似于下面这样的URL: http://X.X.X.X/tb/re?select * from table where name='zhangsan' ?...
  • CURL 请求外部接口 GET 和 POST

    千次阅读 2017-03-01 17:45:13
    CURL 请求外部接口/** * GET方式请求 * @return mixed $result */ protected function getData() { // 取消SSL证书检验 curl_setopt($this->curlHandle, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($this->...
  • node.js调用外部接口

    千次阅读 2020-01-07 15:10:58
    在日让的工作开发中,我们不仅仅要使用node来封装提供一些http接口,也会在node服务中调用一些第三方的HTTP接口,那么如何操作? request 安装依赖 npm install request -S 使用 get请求 var request = require('...
  • 1、spring boot定时任务 2、OKHttp请求外部接口 3、数据源切换的两种方式 4、Mybatis批量插入数据
  • 调用外部接口报403错误的解决办法

    万次阅读 2018-04-28 13:05:18
    问题发现 &nbsp;&nbsp;&nbsp;&nbsp;...最近写一个在线音乐播放项目时,发现了一个问题。...然而直接在浏览器的地址栏直接回车就...首先,报403错误的原因需要提及浏览器的防盗链机制。 防盗链机制 ...
  • Spring-Boot 访问外部接口的几种方案总结

    万次阅读 多人点赞 2018-12-14 23:10:56
    一、简介 ...二、Spring-Boot项目中访问外部接口 2.1 方案一 采用原生的Http请求 在代码中采用原生的http请求,代码参考如下: @RequestMapping(&quot;/doPostGetJson&quot;) public S...
  • 我想使用ajax调用百度的短链接接口,要求post方法,返回json数据格式。但是会出现跨域的问题,用jsonp的话数据格式会出错,请问这个要怎么解决?
  • TMS320F28335之外部接口

    千次阅读 2017-01-13 11:28:24
    28335的XINTF接口没有中断设置,初始化配置XINTF模块就可直接使用,数据访问地址格式为Data=(^(volatile Uint16^)(0x4000+ 0x0000)),其中0x4000为基地址,0x0000为偏移地址,^为指针符号*。
  • NET CORE中使用HttpClient请求外部接口

    千次阅读 2019-11-14 14:02:19
    5、例如我们要请求的接口需要传递下面的参数! 6、创建HttpClient对象,调用接口获取数据 ​ (1)上面的Header中的数据,我们可以通过client.DefaultRequestHeaders.Add()方法,以键值对的形式进行添加。 ​ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 592,703
精华内容 237,081
关键字:

外部接口需要