【问题标题】:Send JSON, multipart/form-data via HTTPS POST to url (C#)通过 HTTPS POST 将 JSON、multipart/form-data 发送到 url (C#)
【发布时间】:2018-04-03 05:11:46
【问题描述】:

我想通过 HTTPS POST 将 JSON、多部分数据发送到 C# 中的 webservice-url。

JSON:

info  = {
  fullname:"Name sername",
  code:"123465",
  code2:"12346",
  code3:"1234567"
}

如何发送到C#中的url?

【问题讨论】:

  • 创建一个HttpClient并构造一个对URL的请求
  • 添加到查询字符串参数
  • 你为什么不直接用谷歌搜索一下?
  • 有什么问题? HTTPS 有问题吗?
  • 我是新的 int C#。在谷歌没有得到结果。谢谢

标签: c# asp.net json http-post


【解决方案1】:

试试这个吧。

var client = new RestClient("http://www.google.com");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "7ef33df4-9c36-4e92-9390-8fd17274d32d");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("content-type", "multipart/form-data; boundary=---- 
WebKitFormBoundary7MA4YWxkTrZu0gW");

request.AddParameter("multipart/form-data; boundary=---- 
WebKitFormBoundary7MA4YWxkTrZu0gW", "------ 
WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; 
name=\"\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", 
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

【讨论】:

    【解决方案2】:

    这是一个示例

    public async Task<String> GetData()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(Statics.Baseurl); 
            //The base Url is the Http Post request url (base) eg: http://www.example.com/
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
            Info info = new Info();
            info.fullname = "Name surname";
            info.code = "123465";
            info.code2 = "123465";
            info.code3 = "123465";
    
            //JsonCOnvert.SerilizeObject() will convert your custom class to JSON
            StringContent content = new StringContent(JsonConvert.SerializeObject(info), Encoding.UTF8, "application/json");
    
            //the base address already defined in the client
            //This is the remaining part of the address.
            //We are passing the JSON value to the HTTP POST here.
            HttpResponseMessage Res = await client.PostAsync("api/Worker/GetDetails", content); 
    
            if (Res.IsSuccessStatusCode)
            {
                 var response = Res.Content.ReadAsStringAsync().Result;
                 return response;
            }
            else
            {
                 return "No_Data"; 
            }
         }
    }
    

    在上面的例子中,有一个类Info,可以定义如下。

    public class Info
    {
       public String fullname { get; set; }
       public String code { get; set; }
       public String code2 { get; set; }
       public String code3 { get; set; }
    }
    

    注意

    1. HttpClient 类可以在System.Net.Http 命名空间下找到
    2. 在您的 asp.net web 表单中使用RegisterAsyncTask 来触发async 方法。请参阅here 了解更多详情。

    【讨论】:

    • 这里我遇到了一些错误:" await client.PostAsync("api/Worker/GetDetails", content);" 'await' 运算符只能在异步方法中使用。考虑使用“异步”修饰符标记此方法并将其返回类型更改为“任务”。
    • 是的,这是 await 运算符的基础。在 public async Task method_name() { ... } 之类的方法中使用代码
    • 我必须将“api/Worker/GetDetails”替换为我的 api 名称吗?
    • 如何在 Button1_Click 下调用这个“Task GetData()”?
    • 那是一个方法,不应该在button_click下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多