我想从政府网络服务检索订单的状态。
文档文件是 http://www.sii.cl/factura_electronica/factura_mercado/estado_envio.pdf根据文档,WSDL 是 https://maullin.sii.cl/DTEWS/QueryEstUp.jws?WSDL .
为此我尝试了两种方法:
- 在vs2010中直接添加引用作为服务引用
- 从 wsdl.exe 生成类文件,然后导入
如果我做对了,我必须发送四个变量。
RutCompania、DvCompania、TrackId、 token
我做到了,这是我的代码
QueryEstUpServicePalena.QueryEstUpClient ClienteP= new QueryEstUpServicePalena.QueryEstUpClient();
var xmlData = ClienteP.getEstUp(RutCompania, DvCompania, TrackId, Token);
XmlDocument _doc = new XmlDocument();
_doc.LoadXml(xmlData);
但无论如何,我只会收到崩溃消息,说无法连接到服务器。 xmlData 始终为 null,就好像我什至没有收到服务器的回复一样。
这是 wsdl.exe 生成的自动代码的一部分(这里是完整的类代码 http://puu.sh/fMPY3/2d9118b053.cs ,注意 RequestNamespace="http://DefaultNamespace",我用服务器 wsdl 完整 url 替换,但仍然失败)。
public string getEstUp(string RutCompania, string DvCompania, string TrackId, string Token) {
object[] results = this.Invoke("getEstUp", new object[] {
RutCompania,
DvCompania,
TrackId,
Token});
服务提供商支持中心很糟糕,他们除了“再次阅读文档文件”之外没有给我任何回复或帮助
我真的不知道该怎么做,因为我使用另一个 WSDL 文件执行此操作并且工作得很好。
编辑:我注意到有效的代理类使用 System.Xml.Serialization.SoapElementAttribute
我现在尝试使用 System.Xml.Serialization.XmlElementAttribute
http://puu.sh/fMRuZ/40bbd9fbda.png
都使用了wsdl.exe,我不知道为什么不同
编辑2:尝试重新制作类文件,但仍然没有结果
Wsdl.exe /out:Proxy.cs /protocol:SOAP https://palena.sii.cl/DTEWS/QueryEstUp.jws?WSDL
最佳答案
终于找到问题所在了
我已向开发团队提交了投诉,因为这最终是他们的错:
我解决这个问题的研究是采用 WSDL:https://maullin.sii.cl/DTEWS/QueryEstUp.jws?WSDL
- 将“http://DefaultNamespace ”替换为“https://maullin.sii.cl/DTEWS/QueryEstUp.jws ”
- 将“use=”encoded”替换为“use=”literal”
- 将“http://nogal.sii.cl:3200/WSAUT/services/CrSeed”替换为“https://maullin.sii.cl/DTEWS/QueryEstUp.jws”
结果:http://puu.sh/fMZkl/fcd33c1ea7.png (不再出现连接错误) 就这样,解决了,工作了,最后我不知道是jws的错还是wsdl.exe的默认程序的错,但我终于解决了
抱歉,如果有人已经尝试让它工作了
问候
关于visual-studio-2010 - 无法使用自动创建的 WSDL 代理类发送 SOAP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463276/