最近项目用到了webservice调用,之前没接触过,在网上找了好些天资料都是关于前端的,由于是别人的webservice跨域原因一直没调用成功,后来问了一下说要通过后台调用,只能重新找后台调用的方法 . 我找到了这篇文章比较符合我的需求
https://blog.csdn.net/wanggsx918/article/details/19153961.
我复制过来使用的时候发现报错,响应为false.我又参考了这篇文章
https://blog.csdn.net/sinat_21946155/article/details/51144945
发现之前的文章里面的
JSONObject args = new
JSONObject();
args.put(
"method"
,
"open"
);
out.writeBytes(args.toString());
out.writeBytes(args.toString());这个写的有些问题需要修改,应该写成这个样子:
args.put(
"method"
,
"open");
out.writeBytes("method="+args.toString());
下面是我的代码,因为是仿项目的原有代码写的所以是通过action 调用service来实现的
jsp页面
//同步按钮
function synchronization(){
var machineCode="";
$(".myclass").each(function(){
machineCode+=","+$(this).children('td:eq(8)').text().trim();
})
//console.log("machineCode="+machineCode);
$.post("syncMachineDisplay.action", {
machineCode : machineCode.substring(1)
}, function(data) {
if(eval("("+data+")")){
alert("同步成功!");
}else{
alert("同步失败!");
}
});
}
action层
/**
* 同步陈列信息
* @return
*/
@Action(value = "syncMachineDisplay")
public String syncMachineDisplay(){
String machineCode = getRequest().getParameter("machineCode");
if(storeDisplayService.syncMachineDisplay(machineCode)){
this.ajaxText("true");
}else{
this.ajaxText("false");
}
return null;
}
service层
/**
*所导的包
*/
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import net.sf.json.JSONObject;
public boolean syncMachineDisplay(String machineCode) {
URL url = null;
try {
for(String str : machineCode.split(",") ){
// 创建连接
url = new
URL("http://139.224.23.120:8081/api/salemachine/syncmachineitems");
HttpURLConnection conn =
(HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");
conn.connect();
// json参数
DataOutputStream out =
new DataOutputStream(conn.getOutputStream());
JSONObject args = new JSONObject();
args.put("machineCode",str);
System.out.println("args="+args.toString());
out.writeBytes("machineCode="+args.toString());
out.flush();
out.close();
// 获取响应
BufferedReader reader = new
BufferedReader(new InputStreamReader(conn.getInputStream()));
String lines;
StringBuffer sb = new StringBuffer();
while((lines = reader.readLine()) != null){
lines = new String(lines.getBytes(), "utf-8");
sb.append(lines);
}
reader.close();
System.out.println("-----------------------------------------------------");
System.out.println(sb);
System.out.println("-----------------------------------------------------");
// 关闭连接
conn.disconnect();
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
运行结果