簡體   English   中英

無法通過HTTPClient向REST發送發布請求

[英]Unable to send post requests to REST through HTTPClient

我正在努力找出的快速問題。

我已經啟動並運行了一個與Postman一起正常運行的REST Api,我試圖弄清楚如何使用Xamarin Forms(使用HTTPClient)通過Post-request進行調用。

這是我當前的代碼:

    public CreateFoundation()
    {
        InitializeComponent();
        lblInstructions.FontAttributes = FontAttributes.Bold;
        lblInstructions.FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label));

        btnCreate.Clicked += async (s, e) =>
            {
                var arb = await PostCreateFoundation(txtCreateFoundation.Text); 
                await DisplayAlert("Clicked", "I was clicked. Text was: " + arb, "OK");
            };
    }


    public async Task<string> PostCreateFoundation(string arbitrary)
    {

        Debug.WriteLine("I'm in!");
        var client = new System.Net.Http.HttpClient();
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        var content = new StringContent(arbitrary); 

        var response = await client.PostAsync("http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/", content);

        var result = (response.Content.ReadAsStringAsync().Result); 
        return result;


    }

當顯示返回的stringarb )時,我可以看到uri是http://myapi.com/RestfulAPI/api/Ole_foundations/Insert/. ,無論我以任意字符串的形式發送...

發送字符串“ test”時所得的URL為:

{MESSAGE”:“未找到與請求URI'http: //myapi.com/RestfulAPI/api/Ole_foundations/Insert/ '相匹配的HTTP資源。”}

編輯:API將任意字符串作為令牌,將預定義對象添加到數據庫中,並將傳入的任意字符串作為返回令牌返回。

REST API函數頭:

    [HttpPost]
    public string Insert(string s)

當操作參數是一個簡單的類型(例如字符串)時,WebAPI會假定它應該在查詢字符串中尋找它。 但是,您正在體內傳遞它。 嘗試將API端的方法簽名更改為:

public string Insert([FromBody]string s)
  1. 刪除uri上的最后一個“ /”

    應該:

    http://myapi.com/RestfulAPI/api/Ole_foundations/Insert

  2. 也是托德·邁納(Todd Meiner)所說的

暫無
暫無

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

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