我正在使用 RestSharp 发出包含 JSON 正文的 POST 请求。但我收到错误请求错误。
因为我已经[]在""JSON 中决定使用 Newtonsoft.Json 。在使用它之前,我什至看不到正在形成的 JSON 请求。
我愿意尝试MS httpwebrequest作为替代方案。
restClient = new RestClient();
restRequest = new RestRequest(ApiUrl, Method.POST, DataFormat.Json);
var myObject = "{ \"target\" : \"[5,5]\", \"lastseen\" : \"1555459984\" }";
var json = JsonConvert.SerializeObject(myObject);
restRequest.AddParameter("application/json", ParameterType.RequestBody);
restRequest.AddJsonBody(json);
Run Code Online (Sandbox Code Playgroud)
请注意,我正在尝试将 JSON 卷曲转换为 C#。请看下面:
curl -H 'Content-Type: application/json' -X POST -d '{ "target" : [5, 5], "lastseen" : "1555459984", "previousTargets" : [ [1, 0], [2, 2], [2, 3] ] }' http://santized/santized/santized
我想使用 RestSharp 将数据发布到我的 API:
我的结构是这样的:
在 PostMan 中,我使用正文选项和原始输入,如下所示:
{
"story_code" : "Amazing Pillow 2.0",
"master_code" : "199",
"created" : "2018-06-01 00:35:07"
}
Run Code Online (Sandbox Code Playgroud)
它有效。在 RestSharp 中,我使用了这段代码,但它返回了错误请求和消息:“无法创建产品。数据不完整。”
var client = new RestClient("http://api.dastanito.ir");
var request = new RestRequest("/storiesmaster/creat.php", Method.POST);
request.AddParameter("story_code", "value");
request.AddParameter("master_code", "value2");
IRestResponse response = client.Execute(request);
var content = response.Content;
Run Code Online (Sandbox Code Playgroud)
我什至使用了 AddQueryParameter 但又是错误的请求。
我应该使用什么功能?
我们正在使用 RestSharp 上传 base64 编码的文件。该 API 需要如下所示的请求格式,但我们无法使用 RestSharp 生成此格式。我想一定有办法吧?
格式1
POST https://www.myapiurl.com/api/v1/add HTTP/1.1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------330780699366863579549053
Content-Length: 522
----------------------------330780699366863579549053
Content-Disposition: form-data; name="id"
7926456167
----------------------------330780699366863579549053
Content-Disposition: form-data; name="filename"
test2.txt
----------------------------330780699366863579549053
Content-Disposition: form-data; name="description"
----------------------------330780699366863579549053
Content-Disposition: form-data; name="attachment"
dGhpcyBpcyBhIHRlc3Q=
----------------------------330780699366863579549053--
Run Code Online (Sandbox Code Playgroud)
使用 RestSharp,我们只能创建一个如下所示的请求:
格式2
POST https://www.myapiurl.com/api/v1/add HTTP/1.1
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------330780699366863579549053
Content-Length: 83
id=7926456167&filename=SQLSearch.exe&description=&attachment=dGhpcyBpcyBhIHRlc3Q=
Run Code Online (Sandbox Code Playgroud)
对于我们正在使用的 API,除非“附件”参数是一个较大的文件,否则这可以正常工作。如果我们使用 FORMAT 1,我们可以手动撰写/提交对更大文件的请求。FORMAT 2 失败,但这就是我们可以从 RestSharp 中得到的一切。
这是我们正在使用的代码。
var client = new RestClient("http://myapiurl.com/api/v1/add");
var restRequest = new RestRequest(request, Method.POST);
restRequest.AddHeader("Content-Type", "multipart/form-data; boundary=--------------------------330780699366863579549053");
restRequest.AddParameter("id", "7926456167", "multipart/form-data", …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Flurl 或 RestSharp 库编写对 Freshdesk API 的调用。
我试图编写的 API 调用是创建票证:https ://developers.freshdesk.com/api/#create_ticket
卷曲的示例:
curl -v -u yourapikey:X -F "attachments[]=@/path/to/attachment1.ext" -F "attachments[]=@/path/to/attachment2.ext" -F "email=example@example.com" -F "subject=Ticket Title" -F "description=this is a sample ticket" -X POST 'https://domain.freshdesk.com/api/v2/tickets'
注意参数是通过-F(即--form)标志传递的。
使用以下代码调用 Flul:
var rs = await url.WithBasicAuth(_configuration.ApiKey, _configuration.Password)
.PostMultipartAsync(mp =>
{
mp.AddString("email", ticket.Email);
mp.AddString("subject", ticket.Subject);
mp.AddString("status", ticket.Status.ToString());
mp.AddString("priority", ticket.Priority.ToString());
mp.AddString("description", ticket.Description);
});
Run Code Online (Sandbox Code Playgroud)
...或者调用 RestSharp 的以下代码:
var request = new RestRequest("tickets", Method.Post);
request.AlwaysMultipartFormData = true;
request.AddParameter("email", ticket.Email);
request.AddParameter("description", ticket.Description);
request.AddParameter("subject", …Run Code Online (Sandbox Code Playgroud) 我是 C# 编程新手。
我正在尝试自动化一些 API 测试并使用 RestSharp 库在 POST 请求中传递有效负载。该有效负载看起来像这样
public class Payload
{
public string firstPayload = @"{
" + "\n" +
@" ""channel"": ""XYZ"",
" + "\n" +
@" ""Email"": ""abc@abc.com""
" + "\n" +
@"}";
}
Run Code Online (Sandbox Code Playgroud)
我在测试项目中将此负载称为有效负载。该请求在 Postman (JSON) 中看起来像这样
{
"channel": "XYZ",
"Email": "abc@abc.com"
}
Run Code Online (Sandbox Code Playgroud)
但由于我不能一遍又一遍地使用同一电子邮件,现在我想在电子邮件中添加 YYYYMMDDTHHMMSS 格式的 (DateTime.Now) ,以便每次运行测试时,它都是唯一的电子邮件。该电子邮件应类似于“abc20220825124587@abc.com”
但我不确定如何在逐字字符串firstPayload C# 代码中添加当前日期时间
我目前尝试从 RestSharp PostAsync 调用获取序列化响应,如
var responseData = Client.PostAsync<Data>(request).Result;
Run Code Online (Sandbox Code Playgroud)
现在,这就是我收到的:
{
"status":1,
"success":"message transmitted",
"available":19215,
"message_ids":"26684730:56798"
}
Run Code Online (Sandbox Code Playgroud)
这是“数据”类:
public class Data
{
[JsonProperty("status")]
public int Status { get; set; }
[JsonProperty("success")]
public string Success { get; set; }
[JsonProperty("available")]
public int Available { get; set; }
[JsonProperty("message_ids")]
public string MessageIds { get; set; }
[JsonProperty("error")]
public string Error { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但属性message_ids始终为空!?这可能是由字符串中的 : 引起的,而这是 RestSharp 中的一个错误吗?
“数据”如下所示:
我有以下网址http://example-api.com/userid/1234 如何将 1234 路径参数添加到我的网址中。
RestRequest 类具有 AddParameter 和 ParameterType 但我没有看到路径参数的任何选项
RestRequest.AddParameter(value, ParameterType.);
Run Code Online (Sandbox Code Playgroud)