簡體   English   中英

如何使用HttpClient使用Post從webAPI返回數據?

[英]How to use HttpClient to return data from webAPI using Post?

我有可以使用下面提到的ajax調用的webAPI。 我正在嘗試使用c# HttpClient實現相同的結果(抓取data.URLs)。 它是獲取我數據的POST請求。

無論我如何創建它都會遇到404錯誤。 下面是代碼:

$.ajax({
            type: "POST",
            crossOrigin: true,
            headers: { "Authorization-Token": "someToken" },
            url: https://someURl?Param1=" + Val1 + "&Param2=" + Val2 + "&Param3=" + Val3,
            contentType: false,
            processData: false,
            data: data,

            success: function (data) {
                document.getElementById("message").innerHTML = data.Message;

                $("#urlelement").empty(); 
                for (var i = 0; i < data.URLs.length; i++) {
                    $("#urlelement").append('<span>' + data.URLs[i] + '</span>');
                    $("#urlelement").append('<br />');
                }
            },
            error: function (data, errorThrown, status) {
                alert(data.responseText);
            }
        });
    });

到目前為止,我的代碼:我知道我沒有返回任何值,只是想知道響應中是否有內容。 不知道是否應該以這種方式創建字符串內容,也不適用於這種情況

   static HttpClient client = new HttpClient();
   static string token = "some values"
   static void Main()
    {
        RunAsync().Wait();
    }

    static async Task RunAsync()
    {
       client.DefaultRequestHeaders.Accept.Clear();
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
        client.DefaultRequestHeaders.Add("Authorization-Token", token);

        string Param1 = "val1";
        string Param2 = "val2";
        int Param3 = val3;

        var requestString = "https://someUrl?";
        var dataString = String.Format("Param1={0}Param2={1}Param3={2}", val1, val2, val3);

        var url = await getDataAsync(requestString, dataString);

    }


    static async Task<Uri> getDataAsync(string path, string data)
    {
        StringContent queryString = new StringContent(data);
        HttpResponseMessage response = await client.PostAsync(path,queryString);
        response.EnsureSuccessStatusCode();
        return response.Headers.Location;
    }

您沒有正確解決網址的某些部分,以下內容應該可以工作

var http = new HttpClient();
var url = String.Format("https://someUrl?Param1={0}&Param2={1}&Param3={2}", val1, val2, val3);
var response = await http.PostAsync(url, null);
var result = await response.Content.ReadAsStringAsync();

通常,如果您不想每次都創建URL的第一部分,則可以為客戶端設置基本URL。 看看這里這里

暫無
暫無

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

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