如何使用httpclient

时间:2018-02-06 11:31:42

标签: c# asp.net-mvc asp.net-web-api2

我正处于学习阶段,我想使用httpclient将文件和数据发布到api。 我试过这个。 这是我的控制器代码

string baseUrl = ServerConfig.server_path +“/ api / Payment / AddMedicineOrder”;             字典参数=新词典();

        parameters.Add("username",user.Username);
        parameters.Add("FullName", FullName);
        parameters.Add("Phone", Phone);
        parameters.Add("CNIC", CNIC);
        parameters.Add("address", address);
        parameters.Add("Email", Email);
        parameters.Add("dateofbirth", dateofbirth.ToShortDateString());
        parameters.Add("Gender", Gender);
        parameters.Add("PaymentMethod", PaymentMethod);
        parameters.Add("Title", Title);
        parameters.Add("PhramaList", medList);



       HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://localhost:44391/");
            MultipartFormDataContent form = new MultipartFormDataContent();
            HttpContent content = new StringContent("fileToUpload");
            HttpContent DictionaryItems = new FormUrlEncodedContent(parameters);
            form.Add(content, "fileToUpload");
            form.Add(DictionaryItems, "medicineOrder");
   var stream = PostedPrescription.InputStream;
            content = new StreamContent(stream);
            content.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
            {
                Name = "fileToUpload",
                FileName = PostedPrescription.FileName
            };
            form.Add(content);

            var response =await client.PostAsync("/api/Payment/AddMedicineOrder", form);
            var k =response.Content.ReadAsStringAsync().Result;

如何在Web api方法中传递此信息

   [HttpPost]
            public async Task<API> AddMedicineOrder()//string key, [FromUri]MedicineOrder medicineOrder
            {
                var request = HttpContext.Current.Request;
                bool SubmittedFile = (request.Files.Count != 0);
                this.Request.Headers.TryGetValues("medicineOrder", out IEnumerable<string> somestring);

                var k = somestring;
  return OK("Success");
            }
            catch (Exception ex)
            {
                return InternalServerError("Technical Error.");
            }

请帮帮我。提前致谢

2 个答案:

答案 0 :(得分:1)

您需要支持为您的网络API添加多部分/表单数据支持。为此,您可以添加自定义媒体类型格式化程序,它将读取您的json内容以及文件内容,您可以直接将其绑定到具体模型。

答案 1 :(得分:0)

=&GT;在这里我放了一个链接,尝试这种方式它可能对你有所帮助。请看一下。

访问https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-2