调用京东的Api需要注册账号
访问https://wx.jdcloud.com/api,并注册账号后,然后出现这个界面
我们找个免费的Api测试一下,以天气预报为例:
点那个测试
右边会给你个密钥,下面是选传还有必传的参数,右边会显示结果,是一个JSON串
现在我们用Java代码来实现调用一下:
将调用步骤封装成一个方法,方便我们调用其他Api的时候使用,减少不必要的重复代码
package com.jym.util;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.Map;
import org.springframework.util.StreamUtils;
public class JymHttpConnection {
private String urlStr;
private Map<String, String> params;
public JymHttpConnection(String urlStr, Map<String, String> params) {
this.urlStr = urlStr;
this.params = params;
}
public String invokeApi() throws Exception{
URL url = new URL(this.urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String paramStr = map2string();
conn.getOutputStream().write(paramStr.getBytes());
conn.connect();
String respStr = StreamUtils.copyToString(conn.getInputStream(), Charset.forName("UTF-8"));
return respStr;
}
private String map2string(){
String paramStr = "";
for(Map.Entry<String, String> entry : this.params.entrySet()){
if(!entry.getKey().isEmpty() && !entry.getValue().isEmpty()){
if(paramStr.isEmpty()){
paramStr = paramStr.concat(entry.getKey()).concat("=").concat(entry.getValue());
}else{
paramStr = paramStr.concat("&").concat(entry.getKey()).concat("=").concat(entry.getValue());
}
}
}
return paramStr;
}
}
调用测试一下
package com.jym.sso;
import java.util.HashMap;
import java.util.Map;
import com.jym.util.JymHttpConnection;
public class HttpClient {
public static void main(String[] args) throws Exception {
String urlStr = "https://way.jd.com/jisuapi/weather";
Map<String, String> params = new HashMap<String, String>();
params.put("city", "沈阳");
params.put("appkey", "4c81f60a91864303857394dc35e7f869");
JymHttpConnection httpconnection = new JymHttpConnection(urlStr, params);
String respStr = httpconnection.invokeApi();
System.out.println(respStr);
}
}
结果
调用成功!!
世界上有10种人,一种是懂二进制的,一种是不懂二进制的。
感谢您的收看,如有哪里写的不对 请留言,谢谢。