Torreson 2013-11-18 11:46 采纳率: 0%
浏览 3339

Android用ksoap2调用WCF的问题,详细如代码。

用Java和WCF框架实现了一个Webservice,在浏览器中输入http://localhost:9999/cat?wsdl
得到:
//--------------------------------------------------

/wsdl:import






/wsdl:input


/wsdl:output
/wsdl:operation




/wsdl:input


/wsdl:output
/wsdl:operation
/wsdl:binding



/wsdl:port
/wsdl:service
/wsdl:definitions

//---------------------------------------------
然后ksoap2实现客户端调用代码:

package kxw;

import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
public class Test {

//命名空间  
private static final String NAMESPACE = "http://ws.cxf.kxw.org/";  
//Service地址  
private static final String URL = "http://localhost:9999/cat/HelloWorld.svc";

//需要调用的方法名  
private static final String METHOD= "sayHi";

//方法对应的Action
private static final String ACTION = "http://ws.cxf.kxw.org/cat/HelloWorld/sayHi";

public static void main(String[] args) {        
    //ISoapService service = new ISoapService("Torres");        
//  SoapObject result = service.LoadResult();                
//  System.out.println("WCF返回的数据是:" + result.getProperty(0));  

    System.out.print( testWCF("Ronaldo"));



}
 public static String  testWCF(String kxw)  {

        String result ="kxw";
    try {  


        //1.实例化SoapObject对象  
        SoapObject request = new SoapObject(NAMESPACE, METHOD);  
        //2.如果方法需要参数,设置参数  
        request.addProperty("arg0", kxw);
       // request.addProperty("strPassWordMd5", strPassWordMd5);
        //3.设置Soap的请求信息,参数部分为Soap协议的版本号  

        System.out.println("----------------");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);  
        envelope.bodyOut=request;
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);     

        //4.构建传输对象  
        HttpTransportSE transport = new HttpTransportSE(URL);  
        transport.debug = true;               
        //5.访问WebService,第一个参数为调用方法的Aciton,第二个参数为Envelope对象  

        System.out.println("----------------");
        transport.call(ACTION, envelope); 

        System.out.printf("success!\n");
        //6.解析返回的数据  
     //  result = envelope.getResponse().toString();

    System.out.print( envelope.getResponse().toString()+"-----------");
}   catch (IOException e) {  

} catch (XmlPullParserException e) {  

}  
return result;

    }

}


1、 private static final String URL = "http://localhost:9999/cat/HelloWorld.svc";
改为:http://localhost:9999/cat/HelloWorld或者http://localhost:9999/cat

2、 private static final String ACTION = "http://ws.cxf.kxw.org/cat/HelloWorld/sayHi";改为http://ws.cxf.kxw.org/cat/sayHi

以上情况都是失败,请问有哪位大哥知道该怎么弄?

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥30 3天&7天&&15天&销量如何统计同一行
    • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
    • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
    • ¥15 vs2019中数据导出问题
    • ¥20 云服务Linux系统TCP-MSS值修改?
    • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)