C# 是否可以使用基本HTTP请求使用XML RPC服务?
我的任务是使用XMLRPCAPI,我对它非常不熟悉。我浏览了几页关于它的描述,我也看到了一些图书馆 然而,这让我感觉到,归根结底,它只是发布了一个HTTP请求,与REST类似,只是在主体中使用XML而不是JSON 我设想构建一个类似于以下内容的HTTP请求:C# 是否可以使用基本HTTP请求使用XML RPC服务?,c#,xml,web-services,C#,Xml,Web Services,我的任务是使用XMLRPCAPI,我对它非常不熟悉。我浏览了几页关于它的描述,我也看到了一些图书馆 然而,这让我感觉到,归根结底,它只是发布了一个HTTP请求,与REST类似,只是在主体中使用XML而不是JSON 我设想构建一个类似于以下内容的HTTP请求: POST /path/service.cfm HTTP/1.0 From: example@example.com User-Agent: whatever/1.0 Content-Type: application/xml Content
POST /path/service.cfm HTTP/1.0
From: example@example.com
User-Agent: whatever/1.0
Content-Type: application/xml
Content-Length: 155
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>
POST/path/service.cfm HTTP/1.0
发件人:example@example.com
用户代理:随便什么/1.0
内容类型:application/xml
内容长度:155
示例.getStateName
40
我走对了吗?周围丰富的图书馆给我的感觉可能比我想象的要复杂。理想情况下,我希望自己在.NET中编写一个快速客户端。staticvoidmain(string[]args)
static void Main(string[] args)
{
HttpWebRequest request = BuildWebRequest();
var response = request.GetResponse() as HttpWebResponse;
var responseContent = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
private static HttpWebRequest BuildWebRequest()
{
var request = WebRequest.Create(Url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/xml";
request.Timeout = 40000;
request.ServicePoint.Expect100Continue = true;
string body = @"<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>";
byte[] bytes = Encoding.Default.GetBytes(body);
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}
return request;
}
{
HttpWebRequest request=BuildWebRequest();
var response=request.GetResponse()作为HttpWebResponse;
var responseContent=newstreamreader(response.GetResponseStream()).ReadToEnd();
}
私有静态HttpWebRequest BuildWebRequest()
{
var request=WebRequest.Create(Url)为HttpWebRequest;
request.Method=“POST”;
request.ContentType=“应用程序/xml”;
请求超时=40000;
request.ServicePoint.Expect100Continue=true;
字符串体=@“
示例.getStateName
40
";
byte[]bytes=Encoding.Default.GetBytes(body);
使用(var requestStream=request.GetRequestStream())
{
requestStream.Write(字节、0、字节、长度);
}
返回请求;
}
是的,这不是一个问题,这里是一个如何做到这一点的例子。在字符串体中,您必须只编写xml,并且应该输入正确的内容类型。如果服务提供商有特定标题等要求,您应该添加它们。啊,是的,这正是我想要的。那么您以前在XML RPC服务上使用过这个吗?@drminnaar如果您愿意,您可以接受我的回答。