日期:2014-05-19  浏览次数:20402 次

WebService问题
下面是移动梦网MISC接口其中一个方法的数据包示例,为了简化,我只截取描述问题的部分:

请求包:
<?xml   version= "1.0 "   encoding= "utf-8 "   ?>  
    <SOAP-ENV:... ">
        <SOAP-ENV:Body>
            <SyncOrderRelationReq   xmlns= "http://www.monternet.com/dsmp/schemas/ ">
                <Version> 1.5.0 </Version>  
                <MsgType> SyncOrderRelationReq </MsgType>
            </SyncOrderRelationReq>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

应答包:
<?xml   version= "1.0 "   encoding= "UTF-8 "   ?>  
    <SOAP-ENV:... ">
        <SOAP-ENV:Body>
            <SubscribeServiceResp   xmlns= "http://10.1.2.122/misc/dsmp.xsd ">
                <Version> 1.5.0 </Version>  
                <MsgType> SubscribeServiceResp </MsgType>  
                <hRet> 0 </hRet>  
            </SubscribeServiceResp>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

问题一:这是一个方法,有输入和输出,大家可以看到,输入参数包含在名为SyncOrderRelationReq的节点中,而输出参数则包含在SubscribeServiceResp的节点中,我试过在.net中它的输出节点名一律为方法名+Response,上面的例子如果用.net实现输出节点名称就为SyncOrderRelationReqResponse,怎么来自定义这个名称呢?

问题二:可以看到在该WebService方法中输入和输出中有两个参数名是一样的:Version和MsgType,但显然无法完成如下方法的定义:
public   void   SyncOrderRelationReq(out   string   Version,   out   string   MsgType,   out   int   hRet,   string   Version,   string   MsgType)
{
    ....
}
他们是怎么解决这个冲突的?

如果用自己分析、读取XML的方式当然如上问题都不存在。但即然是WebService就是要通过方法来完成最方便的调用,请高手指点迷津。不甚感激!

------解决方案--------------------
帮顶
------解决方案--------------------
楼主没有搞清楚这个schema的含义。
问题一,SyncOrderRelationReq和SubscribeServiceResp是类型名而不是方法名。不需要你去从新定义。如果你安装了SDK,应该可以直接找到这两个类型的。
问题二,你应该找到这个方法名是什么,一般来说应该包含在xml头的。最后函数的样子应该如下:
public SubscribeServiceResp SyncOrderRelation(SyncOrderRelationReq)
------解决方案--------------------
我感觉你是要自己写代理类?
你应该在.net项目中用网络引用的方法引用这个接口地址。让.net自动来生成代理类。
如果非要自己写代理类,
按我的理解,这个webMethod的方法名叫SubscribeServiceReq.
输入参数是String Version和String MsgType.
需要另外一个类
SubscribeServiceResp
{
String Version;
String MsgType;
String hRet;
}
来接受返回的应答包。
最后样子如下:
SubscribeServiceResp SyncOrderRelationReq(String Version, String MsgType);
------解决方案--------------------
小菜鸟坐板凳学习中.....
------解决方案--------------------
我顶,顶,我再帮你顶!顶累了,喝口水再顶!!!!!