[英]“POST” with HttpWebRequest not working correctly
我正在尝试将一些xml发布到http://api.opensubtitles.org:80/xml-rpc ,但是它不起作用。 如果我使用https://www.hurl.it/ ,则会得到期望的响应,但不会收到C#。 这是xml:
<?xml version='1.0' encoding='utf-8'?>
<methodCall>
<methodName>LogIn</methodName>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
<param>
<value>
<string>OSTestUserAgent</string>
</value>
</param>
这是我的C#:
public static async Task<string> HttpRequest(string xml)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.opensubtitles.org:80/xml-rpc");
request.Method = "POST";
using (StreamWriter dataStream = new StreamWriter(await request.GetRequestStreamAsync()))
{
dataStream.Write(xml);
dataStream.Dispose();
}
string result = null;
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, Encoding.ASCII))
result = reader.ReadToEnd();
}
}
Debug.WriteLine(result);
return result;
}
我从服务器收到“解析错误。格式不正确”。 到底怎么了?
您忘记了按照XMLRPC规范将参数列表放在<params></params>
标记中。 这段代码可以正常工作:
var myxml =
@"<?xml version='1.0' encoding='utf-8'?>
<methodCall>
<methodName>LogIn</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
<param>
<value>
<string>OSTestUserAgent</string>
</value>
</param>
</params>
</methodCall>";
var request = (HttpWebRequest)WebRequest.Create("http://api.opensubtitles.org:80/xml-rpc");
request.Method = "POST";
using (var dataStream = new StreamWriter(await request.GetRequestStreamAsync()))
{
dataStream.Write(myxml);
dataStream.Dispose();
}
string result = null;
using (var response = await request.GetResponseAsync())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream, Encoding.ASCII))
{
result = reader.ReadToEnd();
}
Debug.WriteLine(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.