gpt4 book ai didi

c# - 使用 restsharp 发布到休息服务

转载 作者:行者123 更新时间:2023-11-30 22:32:02 26 4
gpt4 key购买 nike

好吧,我假设这很简单,但我无法在任何地方找到我的答案...我有一个客户端需要通过 .net 查询 rest api。他向我发送了 api 的 url 和数据样本。这是他发送的:

<?xml version="1.0"?>
<root>
<request>
<APIClientID>0</APIClientID >
<Version>0</Version>
<APIPassword>password</APIPassword >
<Function>functionName</Function >
<Params>
<UserId>(current-datetime)</UserId >
<page>example.aspx</page>
<application>appName</application>
<function>functionName</function>
</Params>
</request >
</root >

我正在使用 restsharp,我正在尝试向该服务发帖。但我一直只是返回获取页面,其中包含 api 的详细信息。这就是我用 restsharp 做的......

var client = new RestClient();
client.BaseUrl = url;

var request = new RestRequest(Method.POST);

request.AddHeader("APIClientID", "4");
request.AddHeader("Version", "0");
request.AddHeader("APIPassword", "password");
request.AddHeader("Function", "TransAPIStats");
request.AddHeader("Version", "0");
request.AddParameter("Client", "test client");
request.AddParameter("UserId", DateTime.Now.ToString());
request.AddParameter("Page", "example.aspx");
request.AddParameter("Application", "app");
request.AddParameter("Function", "function");

RestResponse response = client.Execute(request);

如有任何关于我哪里出错的想法,我们将不胜感激!我猜我没有正确地将 hte xml 翻译成 restsharp 调用,但此时我迷路了……谢谢!

最佳答案

如果 POST 正文需要是 XML 文档,请使用 AddBody()。它默认将传递给它的对象序列化为 XML。您可以使用与您尝试生成的模式相匹配的匿名对象来执行此操作:

var client = new RestClient();
client.BaseUrl = url;

var request = new RestRequest(Method.POST);
request.AddBody(new {
root = new {
request = new {
APIClientID = 4,
Version = 0,
APIPassword = "password",
Function = "TransAPIStats",
Params = new {
UserId = "abc",
page = "example.aspx",
Application = "hrblock-cb",
Function = "ecb"
}
}
}
});

或者您可以定义一个与架构匹配的简单 C# 对象,并使用它代替内联匿名对象。

如果您需要控制序列化(默认应该根据您显示的示例数据工作),您可以实现自己的 ISerializer。文档是这里的最后一部分:https://github.com/restsharp/RestSharp/wiki/Deserialization

关于c# - 使用 restsharp 发布到休息服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com