首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

java调用.net的WS,参数没法读取到

2013-01-04 
java调用.net的WS,参数无法读取到如题,我把c#写的WS代码贴出来[SoapRpcMethod(Action http://www.56rh.

java调用.net的WS,参数无法读取到
如题,我把c#写的WS代码贴出来
  [SoapRpcMethod(Action = "http://www.56rh.com/WS/getName", RequestNamespace = "http://www.56rh.com/WS/", ResponseNamespace = "http://www.56rh.com/WS/", Use = System.Web.Services.Description.SoapBindingUse.Literal)]
         [WebMethod(Description = "")]
         public string getName(string name)
         {
             writefile(name);
             return "Hello" + name;
           
         }
我写了这个简单的例子,writefile为读取参数写入本地txt,java端调用我WS始终返回hello.查看txt显示参数name为空。
有人遇到过这样的情况么
[解决办法]
累不累啊?

你可以先写一个ashx,例如

<%@ WebHandler Language="C#" Class="HelloJava" %>

using System;
using System.Web;

public class HelloJava : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello " + context.Request.QueryString["name"]);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}


先把web service扔到脑后。
[解决办法]
引用:
引用:

怎么也得检查java代码啊

java端不是很懂,我就把java端的代码贴出来
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class……


试了下,你把 new Object[] { name } 拿出来单独定义再传入。。。就好了。
付一个我调用 WebXml 的示例。

String endPoint = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
        Service service = new Service();

        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(endPoint);

        String namespace = "http://WebXml.com.cn/";
        call.addParameter(new QName(namespace, "mobileCode"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
        call.addParameter(new QName(namespace, "userID"), org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
        call.setReturnClass(java.lang.String.class);

        String oName = "getMobileCodeInfo";
        call.setUseSOAPAction(true);


        call.setSOAPActionURI(namespace + oName);

        call.setOperationName(new QName(namespace, oName));
        Object[] params = new Object[] {"13899900000", ""};
        String result = (String) call.invoke(params);
                System.out.println(result);


[解决办法]
通过抓包工具可以看到java端在调用.NET WS时已经将值传送过去。
问题是否处在WS设置上?

热点排行