java 后台调用 C#的webservice api

最近项目用到了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;
	}
}

运行结果

java 后台调用 C#的webservice api_第1张图片

你可能感兴趣的:(webservice,后台调用)