1、使用webservice接口文档,将接口需要的参数,返回的信息暴露出来。(此方法在这里不做介绍,网上资料一大堆)
2、直接在后台使用httpURLConnection创建连接,来调用web接口,代码如下:
public String invokWebUrl(String urlString ,String json) {
HttpURLConnection conn = null;
BufferedReader reader = null;
StringBuffer sb = new StringBuffer("");
try {
// 创建连接
URL url = new URL(urlString);
// 打开连接
conn = (HttpURLConnection) url.openConnection();
// 设置是否向conn输出,因为这是个post请求,参数要放在http正文内,因此需要设置DoOutPut为true
conn.setDoOutput(true);
// 默认为true
conn.setDoInput(true);
// 设置为post方式,默认是get方式
conn.setRequestMethod("POST");
// post请求不能使用缓存
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(false);
// 编码设置
conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
conn.connect();
// connection.getOutputStream会隐含的进行conn.connect();
DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
outputStream.writeChars(json);
outputStream.flush();
outputStream.close();
// 获取并解析数据
InputStream inputStream = conn.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
String line;
while ((line = reader.readLine()) != null){
line = new String(line.getBytes(), "utf-8");
sb.append(line);
}
// 将返回的信息转换成 jsonobject,就能根据key获取数据
// JSONObject res = JSONObject.parseObject(sb.toString());
inputStream.close();
// 如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}