Отправлять HTTP-запросы с использованием .NET core 2.0 [duplicate]

Основная проблема с кодом, показанным OP, заключается в том, что i никогда не читается до второго цикла. Чтобы продемонстрировать, представьте, что вы видите ошибку внутри кода

funcs[i] = function() {            // and store them in funcs
    throw new Error("test");
    console.log("My value: " + i); // each should log its value.
};

Ошибка на самом деле не происходит до тех пор, пока funcs[someIndex] не будет выполнен (). Используя эту же логику, должно быть очевидно, что значение i также не будет собрано до этой точки. Как только исходный цикл завершится, i++ добавит i к значению 3, что приведет к сбою условия i < 3 и завершению цикла. На этом этапе i является 3, поэтому, когда используется funcs[someIndex](), и i оценивается, он равен 3 - каждый раз.

Чтобы пройти мимо этого, вы должны оценить i, поскольку он встречается. Обратите внимание, что это уже произошло в форме funcs[i] (где есть 3 уникальных индекса). Существует несколько способов захвата этого значения. Один из них - передать его в качестве параметра функции, которая уже несколько раз показана здесь.

Другой вариант - построить объект функции, который сможет закрыть эту переменную. Это может быть выполнено таким образом

jsFiddle Demo

funcs[i] = new function() {   
    var closedVariable = i;
    return function(){
        console.log("My value: " + closedVariable); 
    };
};

65
задан Rem 10 June 2016 в 14:12
поделиться

4 ответа

Вы должны добавить ссылку на пакет «Microsoft.AspNet.WebApi.Client» (прочтите эту статью для образцов).

Без дополнительного расширения вы можете использовать стандартный метод PostAsync:

client.PostAsync(uri, new StringContent(jsonInString, Encoding.UTF8, "application/json"));

, где значение jsonInString вы можете получить, вызвав JsonConvert.SerializeObject(<your object>);

93
ответ дан Set 23 August 2018 в 17:36
поделиться

Я использую этот класс:

public class JsonContent : StringContent
{
    public JsonContent(object obj) :
        base(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")
    { }
}

Пример использования:

new HttpClient().PostAsync("http://...", new JsonContent(new { x = 1, y = 2 }));
45
ответ дан IvanH 23 August 2018 в 17:36
поделиться

Я бы добавил к принятому ответу, что вы также захотите добавить заголовок Accept в httpClient:

httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
7
ответ дан Serj Sagan 23 August 2018 в 17:36
поделиться

Вы можете использовать IEnterprise.Easy-HTTP , поскольку он имеет встроенный синтаксический анализ:

await new RequestBuilder<ExampleObject>()
.SetHost("https://httpbin.org")
.SetContentType(ContentType.Application_Json)
.SetType(RequestType.Post)
.SetModelToSerialize(dto)
.Build()
.Execute();
3
ответ дан Stephen Kennedy 23 August 2018 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: