【发布时间】:2019-08-21 03:47:09
【问题描述】:
我有一个使用 SOAP UI 测试过的项目文件。
现在我想写它的客户端,所以通过查看这个solution,我试图做一些事情。但我有一个问题。
在解决方案中,提到了URL 和action。我有一个URL,但我不确定我的action URL 是什么。所以我把两者都一样。
var _url = "http://111.111.111.1:111/HES/services/DoCommandRequest";
var _action = "http://111.111.111.1:111/HES/services/DoCommandRequest";
XmlDocument soapEnvelopeXml = CreateSoapEnvelope();
HttpWebRequest webRequest = CreateWebRequest(_url, _action);
InsertSoapEnvelopeIntoWebRequest(soapEnvelopeXml, webRequest);
// begin async call to web request.
IAsyncResult asyncResult = webRequest.BeginGetResponse(null, null);
// suspend this thread until call is complete. You might want to
// do something usefull here like update your UI.
asyncResult.AsyncWaitHandle.WaitOne();
// get the response from the completed web request.
string soapResult;
using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult))
{
using (StreamReader rd = new StreamReader(webResponse.GetResponseStream()))
{
soapResult = rd.ReadToEnd();
}
Console.Write(soapResult);
}
运行我的代码后,我在using (WebResponse webResponse = webRequest.EndGetResponse(asyncResult)) 收到一个异常,上面写着
System.Net.WebException {“远程服务器返回错误:(500)内部服务器错误。”}
我相信我的action 有问题,但我不确定。
任何帮助将不胜感激。
【问题讨论】:
-
我看到您正在使用字符串连接构建 XML:这是个坏主意。 XML 的编码规则会让你大吃一惊。 .NET 有多种用于构建 XML 的选项,它们将为您完成艰苦的工作。
-
您要处理的回复 XML 在代码中的什么位置? (
DataTable是干什么用的?它是从数组中加载的,然后迭代……这可以直接用数组来完成。) -
什么是“字符串文件”?文件与 Web 服务有什么关系?您是在问如何向服务发出 HTTP 请求吗?如果是这样,请在问题中更清楚地说明。
-
@TomW 我已经更新了我的问题并添加了更多细节,你可以看到它
-
@Richard 是的,我无法得到答复。我也更新了我的问题并添加了更多细节。可以看看吗?
标签: c# soap webservice-client