欢迎光临散文网 会员登陆 & 注册

API接口的使用我这里用java和python都写出来了

2020-11-02 22:00 作者:小垃圾kiki  | 我要投稿

import urllib,  sys
import urllib.request
import ssl


host = 'https://api01.aliyun.venuscn.com'
path = '/ip'
method = 'GET'
appcode = 'a661bca174e1458bacaf7a78d489c5f3'
querys = 'ip=218.18.228.178'
bodys = {}
url = host + path + '?' + querys

request = urllib.request.Request(url)
request.add_header('Authorization', 'APPCODE ' + appcode)
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
response = urllib.request.urlopen(request, context=ctx)
content = response.read()
if (content):
   print(content)


package com.example.demo.test;


import org.apache.http.HttpResponse;

import java.util.HashMap;
import java.util.Map;

public class one {
   public static void main(String[] args) {
       String host = "https://api01.aliyun.venuscn.com";
       String path = "/ip";
       String method = "GET";
       String appcode = "a661bca174e1458bacaf7a78d489c5f3";
       Map<String, String> headers = new HashMap<String, String>();
       //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
       headers.put("Authorization", "APPCODE " + appcode);
       Map<String, String> querys = new HashMap<String, String>();
       querys.put("ip", "8.8.8.8");


       try {
           /**
            * 重要提示如下:
            * HttpUtils请从
            * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
            * 下载
            *
            * 相应的依赖请参照
            * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
            */
           HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
           System.out.println(response.toString());
           //获取response的body
           //System.out.println(EntityUtils.toString(response.getEntity()));
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

}


package com.example.demo.test;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class HttpUtils {

   /**
    * get
    *
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @return
    * @throws Exception
    */
   public static HttpResponse doGet(String host, String path, String method,
                                    Map<String, String> headers,
                                    Map<String, String> querys)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpGet request = new HttpGet(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       return httpClient.execute(request);
   }

   /**
    * post form
    *
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @param bodys
    * @return
    * @throws Exception
    */
   public static HttpResponse doPost(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     Map<String, String> bodys)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpPost request = new HttpPost(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       if (bodys != null) {
           List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();

           for (String key : bodys.keySet()) {
               nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
           }
           UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
           formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
           request.setEntity(formEntity);
       }

       return httpClient.execute(request);
   }

   /**
    * Post String
    *
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @param body
    * @return
    * @throws Exception
    */
   public static HttpResponse doPost(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     String body)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpPost request = new HttpPost(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       if (StringUtils.isNotBlank(body)) {
           request.setEntity(new StringEntity(body, "utf-8"));
       }

       return httpClient.execute(request);
   }

   /**
    * Post stream
    *
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @param body
    * @return
    * @throws Exception
    */
   public static HttpResponse doPost(String host, String path, String method,
                                     Map<String, String> headers,
                                     Map<String, String> querys,
                                     byte[] body)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpPost request = new HttpPost(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       if (body != null) {
           request.setEntity(new ByteArrayEntity(body));
       }

       return httpClient.execute(request);
   }

   /**
    * Put String
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @param body
    * @return
    * @throws Exception
    */
   public static HttpResponse doPut(String host, String path, String method,
                                    Map<String, String> headers,
                                    Map<String, String> querys,
                                    String body)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpPut request = new HttpPut(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       if (StringUtils.isNotBlank(body)) {
           request.setEntity(new StringEntity(body, "utf-8"));
       }

       return httpClient.execute(request);
   }

   /**
    * Put stream
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @param body
    * @return
    * @throws Exception
    */
   public static HttpResponse doPut(String host, String path, String method,
                                    Map<String, String> headers,
                                    Map<String, String> querys,
                                    byte[] body)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpPut request = new HttpPut(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       if (body != null) {
           request.setEntity(new ByteArrayEntity(body));
       }

       return httpClient.execute(request);
   }

   /**
    * Delete
    *
    * @param host
    * @param path
    * @param method
    * @param headers
    * @param querys
    * @return
    * @throws Exception
    */
   public static HttpResponse doDelete(String host, String path, String method,
                                       Map<String, String> headers,
                                       Map<String, String> querys)
           throws Exception {
       HttpClient httpClient = wrapClient(host);

       HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
       for (Map.Entry<String, String> e : headers.entrySet()) {
           request.addHeader(e.getKey(), e.getValue());
       }

       return httpClient.execute(request);
   }

   private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
       StringBuilder sbUrl = new StringBuilder();
       sbUrl.append(host);
       if (!StringUtils.isBlank(path)) {
           sbUrl.append(path);
       }
       if (null != querys) {
           StringBuilder sbQuery = new StringBuilder();
           for (Map.Entry<String, String> query : querys.entrySet()) {
               if (0 < sbQuery.length()) {
                   sbQuery.append("&");
               }
               if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
                   sbQuery.append(query.getValue());
               }
               if (!StringUtils.isBlank(query.getKey())) {
                   sbQuery.append(query.getKey());
                   if (!StringUtils.isBlank(query.getValue())) {
                       sbQuery.append("=");
                       sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
                   }
               }
           }
           if (0 < sbQuery.length()) {
               sbUrl.append("?").append(sbQuery);
           }
       }

       return sbUrl.toString();
   }

   private static HttpClient wrapClient(String host) {
       HttpClient httpClient = new DefaultHttpClient();
       if (host.startsWith("https://")) {
           sslClient(httpClient);
       }

       return httpClient;
   }

   private static void sslClient(HttpClient httpClient) {
       try {
           SSLContext ctx = SSLContext.getInstance("TLS");
           X509TrustManager tm = new X509TrustManager() {
               public X509Certificate[] getAcceptedIssuers() {
                   return null;
               }
               public void checkClientTrusted(X509Certificate[] xcs, String str) {

               }
               public void checkServerTrusted(X509Certificate[] xcs, String str) {

               }
           };
           ctx.init(null, new TrustManager[] { tm }, null);
           SSLSocketFactory ssf = new SSLSocketFactory(ctx);
           ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
           ClientConnectionManager ccm = httpClient.getConnectionManager();
           SchemeRegistry registry = ccm.getSchemeRegistry();
           registry.register(new Scheme("https", 443, ssf));
       } catch (KeyManagementException ex) {
           throw new RuntimeException(ex);
       } catch (NoSuchAlgorithmException ex) {
           throw new RuntimeException(ex);
       }
   }
}

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.3.5.RELEASE</version>
       <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.example</groupId>
   <artifactId>demo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>demo</name>
   <description>Demo project for Spring Boot</description>

   <properties>
       <java.version>1.8</java.version>
   </properties>

   <dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter</artifactId>
       </dependency>

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
           <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
               </exclusion>
           </exclusions>
       </dependency>

       <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>fastjson</artifactId>
           <version>1.2.15</version>
       </dependency>
       <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpclient</artifactId>
           <version>4.2.1</version>
       </dependency>
       <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpcore</artifactId>
           <version>4.2.1</version>
       </dependency>
       <dependency>
           <groupId>commons-lang</groupId>
           <artifactId>commons-lang</artifactId>
           <version>2.6</version>
       </dependency>
       <dependency>
           <groupId>org.eclipse.jetty</groupId>
           <artifactId>jetty-util</artifactId>
           <version>9.3.7.v20160115</version>
       </dependency>
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.5</version>
           <scope>test</scope>
       </dependency>
   </dependencies>


   <build>
       <plugins>
           <plugin>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>

</project>


API接口的使用我这里用java和python都写出来了的评论 (共 条)

分享到微博请遵守国家法律