【发布时间】:2017-01-17 10:13:43
【问题描述】:
在做了一些调查并阅读了几篇关于它的帖子,尤其是这篇文章之后:
我想出了以下代码:
RequestingXMLData = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:iaso-com:cloud:mansvc:15.12.0"">
<soapenv:Header/>
<soapenv:Body>
<urn:Authenticate>
<request>
<partnerName>XXX</partnerName>
<userName>XXX</userName>
<password>XXX</password>
</request>
</urn:Authenticate>
</soapenv:Body>
</soapenv:Envelope>";
//Retrieves XML Data from API link / service, optional to spit XML to a given file location
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(ApiCallPath);
request.Method = "POST";
request.ContentType = "text/xml;charset=\"utf-8\"";
request.ContentLength = RequestingXMLData.Length;
using (Stream webStream = request.GetRequestStream())
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII))
{
requestWriter.Write(RequestingXMLData);
}
try
{
WebResponse webResponse = request.GetResponse();
using (Stream webStream = webResponse.GetResponseStream())
{
if (webStream != null)
{
using (StreamReader responseReader = new StreamReader(webStream))
{
response = responseReader.ReadToEnd();
}
}
}
}
catch (WebException e)
{
var resp = new StreamReader(e.Response.GetResponseStream()).ReadToEnd();
}
return response;
我在the WebResponse webResponse = request.GetResponse(); 部分不断收到 500 错误。
正如我在几篇文章中所建议的那样,我下载了 Fiddler,我从中得到的响应看起来不错(虽然没有经验,所以我可能会离开):
Request Count: 1
Bytes Sent: 85 (headers:85; body:0)
Bytes Received: 107 (headers:107; body:0)
Tunnel Sent: 1.740
Tunnel Received: 4.900
ACTUAL PERFORMANCE
--------------
ClientConnected: 11:03:28.895
ClientBeginRequest: 11:03:28.900
GotRequestHeaders: 11:03:28.900
ClientDoneRequest: 11:03:28.901
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 12ms
HTTPS Handshake: 0ms
ServerConnected: 11:03:28.916
FiddlerBeginRequest: 11:03:28.916
ServerGotRequest: 11:03:28.916
ServerBeginResponse: 00:00:00.000
GotResponseHeaders: 00:00:00.000
ServerDoneResponse: 00:00:00.000
ClientBeginResponse: 11:03:28.917
ClientDoneResponse: 11:03:28.917
Overall Elapsed: 0:00:00.017
RESPONSE BYTES (by Content-Type)
--------------
~headers~: 107
接下来我尝试检索 WebException,这就是它返回的内容:
我还在 SOAP UI 中对其进行了测试,它似乎可以工作 - 在修复 Java 错误之后(因此验证数据也是正确的)。
一些附加信息:
- SOAP 链接调用 = https://cloud.iaso.com/manserv
- API 信息https://www.iaso.com/kb/article.php?url=IASOARTICLE38(我觉得很难阅读/理解。
请记住,我以前从未使用 SOAP 做过任何事情,所以如果问题看起来很明显,我深表歉意 :)
【问题讨论】:
-
new StreamWriter(webStream, System.Text.Encoding.ASCII))试试System.Text.Encoding.UTF8 -
更改后我在更改部分遇到异常
using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.UTF8))异常:The request was aborted: The request was canceled. -
嗯,这很奇怪。让我再检查一遍
-
可能是调用 SOAP XML 的问题?将测试这篇文章中给出的答案:stackoverflow.com/questions/14499006/… BTW 愚蠢,我错过了 ASCII 编码;)
-
嗯,也可能是保活问题。异常是立即引发还是需要一些时间(几秒钟)? stackoverflow.com/questions/2459241/…
标签: c# web-services soap