调用接口的正确方式
以京东万象API为例,调用手机好归属地。
进入到,手机号归属地的api接口测试页面,先在该页面测试,成功后,到java中手撸。
上图看到,已经是可以用的了。
然后创建一个maven项目,需要用到Spring的StreamUtrls工具类,所以导入一下下面这个依赖,其它什么都不用,直接开干。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
代码:
import org.springframework.util.StreamUtils;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
/**
* @author langkye
*/
public class MyHttp {
public static void main(String[] args) throws Exception {
//1.定义URL
URL url = new URL("https://way.jd.com/jisuapi/query4");
//2.打开链接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//3.设置请求类型
connection.setRequestMethod("POST");
//4.设置请求参数 | phone=13800138000&appkey=dc2844cb3cd5ff4bf232c037eb23766b
connection.setDoOutput(true);
//声明参数
StringBuilder params = new StringBuilder();
//查询的手机号
long phone = 13456755448L;
//appkey是自己的万象帐号的appkey,测试时,页面会生成,下面是做示例,非真实,不能用
String appkey = "dc2844c*****";
//添加参数
params.append("shouji=")
.append(phone)
.append("&appkey=")
.append(appkey);
//设置输出流编码格式
connection.getOutputStream().write(params.toString().getBytes("UTF-8"));
//5.发起请求
connection.connect();
//6.接受数据,使用Spring的工具类将输入流转为字符串,设置编码为UTF-8
String response = StreamUtils.copyToString(connection.getInputStream(), Charset.forName("UTF-8"));
System.out.println("response = " + response);
}
}
输出:
response = {"code":"10000","charge":false,"msg":"查询成功","result":{"status":0,"msg":"ok","result":{"shouji":"13456755448","province":"浙江","city":"杭州","company":"中国移动","areacode":"0571"}}