我必须将XML文档作为参数发送,以使用Post方法请求WebRequest并获得响应。 Web服务实现以下方法:
public string Register(XmlDocument register){...}
我正在尝试this,但我无法得到回应,而且我不确定我的代码是否有效=(
HttpWebRequest request = HttpWebRequest.Create("http://ws2.sti.gov.kg/TRKService/PatentService.asmx/Register") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
Encoding ex = Encoding.GetEncoding("iso-8859-1");
XmlDocument doc = new XmlDocument();
doc.LoadXml("<foo><bar>baz</bar></foo>");
string rawXml = doc.OuterXml;
string requestText = string.Format("register={0}", HttpUtility.UrlEncode(rawXml, ex));
Stream requestStream = request.GetRequestStream();
StreamWriter requestWriter = new StreamWriter(requestStream, ex);
requestWriter.Write(requestText);
requestWriter.Close();
也许有人有一个有效的例子?
答案 0 :(得分:1)
403错误
如果您在尝试导入Web服务时获得403,这可能不是您的错。尝试 在Web浏览器中查看wsdl文件。如果您仍然收到403错误,则由于您没有使用该服务的权限,因此不再使用编码。
代码语法
此外,在您的代码中,您似乎无法在任何地方回读响应。您的上一条语句将XML写入流中,但您不会在任何地方回读响应。
requestWriter.Write(requestText);
requestWriter.Close();
<强> SOAP 强>
如果您正在与之通信的Web服务是基于SOAP的,那么您的XML有效负载需要符合SOAP标准。上面的示例代码使用了非常基本的XML,可能是因为它只是一个示例,但要使它工作,您将需要格式符合
的请求。<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetWeather xmlns="http://www.webserviceX.NET">
<CityName>string</CityName>
<CountryName>string</CountryName>
</GetWeather>
</soap:Body>
</soap:Envelope>
不
<foo><bar>baz</bar></foo>
同样,您显然只使用foo作为示例,但这也可能是您的问题的根源,因此请检查您发送的实际XML负载。