如何从c连接到XML-RPC#

如何从c连接到XML-RPC#,c#,pandorabots,C#,Pandorabots,如何从c#连接到XML-RPC Api 客户端可以通过发布到以下地址与Pandorabot交互: 客户端需要发布的表单变量包括: botid-见上文H.1。 输入-你想对机器人说什么。 custid—跟踪与特定客户对话的ID。此变量是可选的。如果不发送值,Pandorabots将在返回的XML元素中返回custid属性值。在后续帖子中使用此选项继续对话 如何打电话?这应该可以让你开始: public void Talk() { string xmlResult =

如何从c#连接到XML-RPC Api

客户端可以通过发布到以下地址与Pandorabot交互:

客户端需要发布的表单变量包括:

botid-见上文H.1。 输入-你想对机器人说什么。 custid—跟踪与特定客户对话的ID。此变量是可选的。如果不发送值,Pandorabots将在返回的XML元素中返回custid属性值。在后续帖子中使用此选项继续对话


如何打电话?

这应该可以让你开始:

   public void Talk()
   {
        string xmlResult = null;
        Result result = null;  // Result declared at the end 
        string botId = "c49b63239e34d1"; // enter your botid
        string talk = "Am I a human?"; 
        string custId = null; // (or a value )
        using (var wc = new WebClient())
        {
            var col = new NameValueCollection();

            col.Add("botid", botId);
            col.Add("input", talk);
            if (!String.IsNullOrEmpty(custId))
            {
                col.Add("custid", custId);
            }

            byte[] xmlResultBytes = wc.UploadValues(
                @"http://www.pandorabots.com/pandora/talk-xml", 
                "POST", 
                col);
            xmlResult = UTF8Encoding.UTF8.GetString(xmlResultBytes);
            result = Result.GetInstance(xmlResultBytes);
        }

        //raw result
        Console.WriteLine(xmlResult);

        // use the Result class
        if (result.status == 0)  // no error
        {
            Console.WriteLine("{0} -> {1}", 
                result.input, result.that);
        }
        else  // error
        {
            Console.WriteLine("Error: {0} : {1}", 
                result.input, result.message);
        }
    }


[XmlRoot(ElementName="result")]
public class Result
{
    static XmlSerializer ser = new XmlSerializer(typeof(Result) , "");

    public Result()
    {
    }

    public static Result GetInstance(byte[] bytes)
    {
        return (Result)ser.Deserialize(new MemoryStream(bytes));
    }

    [XmlAttribute]
    public int status { get; set; }
    [XmlAttribute]
    public string botid { get; set; }
    [XmlAttribute]
    public string custid { get; set; }
    [XmlElement]
    public string input { get; set; }
    [XmlElement]
    public string that { get; set; }
    [XmlElement]
    public string message { get; set; }
}

你做了什么研究?你试过什么?您是否遇到我们可以帮助您解决的特定错误?可能重复:。虽然他们至少付出了一点努力,但这并不是这个问题的重复,我试图做的是向那个api发送http请求并请求输出。我是XML-RPC新手,我不知道它是如何工作的。这是他们提供的文档,我不知道如何输入变量、发送请求和获得响应,你能帮我吗结果中的“结果”=null;,它给了我一个错误,它是一个数据类型吗?是的,我的错,我看到了下面的公开声明,好的。谢谢,它工作得很好,你能提供C++版本吗?我试过了,但是功能给我错误,我不能。我不是C++开发者。你用C语言标记了你的问题,所以你得到的是:-)。你可以把我的答案标记为正确的,试着让你自己去实现C++的运行,当你陷入困境时,提出一个新的问题,显示你的代码并引用这个问题和答案。堆栈溢出不是C++实现的BOT: