簡體   English   中英

如何以C#Xamarin形式調用具有多個參數的Web API

[英]How to call web api with multiple parameter in c# xamarin forms

我知道這是一個重復的問題。 我已經嘗試了許多關於stackoverflow的示例。 但是API仍未調用,並且顯示404 not found錯誤。 我嘗試了以下示例,

范例1:

using (var loginData = new MultipartFormDataContent())
{
    loginData.Add(new StringContent(JsonConvert.SerializeObject(login.Email)), "emailId");
    loginData.Add(new StringContent(JsonConvert.SerializeObject(this.Password)), "password");
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var response = await httpClient.PostAsync("http://6cxsfera.ngrok.io/api/users/authenticate", loginData);
    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        Application.Current.MainPage = new AppShell();
    }
}

范例2:

JObject loginData = new JObject();
loginData.Add("emailId", login.Email);
loginData.Add("password", this.Password);
var httpClient = new HttpClient();
var httpContent = new StringContent(loginData.ToString(), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("http://6cxsfera.ngrok.io/api/users/authenticate", httpContent);

我的API:

[Route("authenticate")]
[HttpPost]
public HttpResponseMessage Login(HttpRequestMessage request, string emailId, string password)
{
}

請建議我以c#xamarin形式將多個參數傳遞給Web API。

您可以由郵遞員生成代碼。 然后檢查帽子,你失蹤了。 您甚至可以使用郵遞員生成的相同代碼。 https://learning.getpostman.com/docs/postman/sending_api_requests/generate_code_snippets/

只需安裝restSharp nuget軟件包即可。它將與郵遞員生成的代碼一起使用。

無需創建JObject,而是創建一個類,其中包含您的emailId和password屬性,如下所示。

public class UserModel
{
   public string emailId {get;set;}
   public string password {get;set;}
}

現在稍后實例化UserModel並分配如下值

UserModel user = new UserModel
{
   emailId = "emailId",
   password = "password"
};

如下序列化UserModel

string serializedModel = await Task.Run(() => JsonConvert.SerializeObject(user));
var contents = new StringContent(serializedModel);
contents.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

發出發布請求

var response = await httpClient.PostAsync("http://6cxsfera.ngrok.io/api/users/authenticate", contents);

如果上述解決方案不起作用,請嘗試更改您的Web Api方法路線,如下所示

Route["api/users/authenticate"]

希望這能解決您的問題... :)

您可以嘗試以下方法:

using (var httpclient = new HttpClient())
{
   var formcontent = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string,string>("emailId",emailId),
        new KeyValuePair<string, string>("password","password")
    });

  var request = await httpclient .PostAsync("http://6cxsfera.ngrok.io/api/users/authenticate", formcontent);
  request.EnsureSuccessStatusCode();
  var response = await request.Content.ReadAsStringAsync();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM