在做项目的过程中总会碰到一些需要调别人的接口之类的,本文拿我做项目时碰到的调微信API拿到手机openid来
try块里面的都可以直接复制,把url改成自己的就可以了,参数什么的就跟你在网页上访问接口一样
String code = "123456"; //这里随便定义一个code值,因为微信提供的code需要特定方式获取,而且只能用一次就失效了
try {
//如果传进来有中文字符 可以使用 URLEncoder.encode 方法进行编码转换
//String start = "杭州"; //转换前
//start = URLEncoder.encode(start, "utf-8"); //转换中
//System.out.printin(start) //转换后 %E6%9D%AD%E5%B7%9E
URL url = new URL("https://api.weixin.qq.com/sns/jscode2session?js_code="+code+"&&appid=wx9827ec2abca8a12a&&secret=baf2ca273073cd613270e8e6834f9679&&grant_type=authorization_code ");
System.out.println(url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty(
"User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1096.1 Safari/536.6");
conn.setRequestProperty("content-type",
"application/x-www-form-urlencoded;charset=UTF-8");
conn.setDoOutput(true);
if (conn.getResponseCode() == 302) {
System.out.println(302);
return null;
}
if (conn.getResponseCode() == 200) {
System.out.println(200);
}
BufferedReader rd = new BufferedReader(new InputStreamReader(
conn.getInputStream(), "utf-8"));
StringBuffer sb = new StringBuffer();
String s = "";
while ((s = rd.readLine()) != null) {
sb.append(s);
}
// System.out.println(sb);
if (sb.length() == 0) {
sb.append("[]");
}
result = sb.toString();
System.out.println(result); //到这里就获取到结果了result是结果
rd.close();
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
这个就是返回的结果集,result就是这个东东
下面我们来解析一下result,我这里使用的是JacksonUtil,这是一个解析json格式的工具。
Map<String,Object> paramMap = jacksonUtil.toObject(result,new TypeReference<Map<String,Object>>() {});
Map map = new HashMap<String, Object>();
map.put("errcode",paramMap.get("errcode"));
map.put("msg", "访问成功");
return jacksonUtil.toJson(map);
来看一下结果
整个java后台访问url就进行完了,希望能帮到你们!!!