В настоящее время я отправляю строку json в API для получения объекта, содержащего различные значения.PostAsJsonAsync return null
Это строка JSON я отправляю:
{"SomeProperty":1,"DimensionOne":4,"DimensionTwo":6,"IdNumber":0}
Теперь у меня нет проблем с самой строкой Json, потому что я проверил эту строку в Скрипач собирается АНИ, и он отлично работает отлично, возвращая все значения, которые мне нужны.
Единственная разница между тем, что я делаю и что делает Fiddler, это то, что я перехожу от сценария к WebService, который отправляется в API.
Вот код, я использую для WebService:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public ObjectType Relay(string json)
{
const string url = "https://api.com";
var client = new HttpClient {BaseAddress = new Uri(url)};
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("api/v1/GetObject", json).Result;
if (response.IsSuccessStatusCode)
{
var objectRequest = Task.FromResult(response.Content.ReadAsStringAsync());
return JsonConvert.DeserializeObject<ObjectType>(objectRequest.Result.Result);
}
return null;
}
}
До сих пор он только вернулся нуль (очевидно потому, что response.IsSuccessStatusCode не TRUE)
Но когда я закомментировать, если скобки и удалить возвращаемый null, он дает мне пустой объект, когда я должен получать данные. Все входы правильные.
Мне интересно, должен ли я использовать метод, отличный от PostAsJsonAsync, или если есть что-то еще, что я должен делать с json-строкой или json-заголовком.
Опять же, строка json находится в правильном формате, так как она работала с Fiddler и ранее работала при переходе непосредственно с веб-сайта на API (без WebService).
Буду признателен за любые предложения. Заранее спасибо.
Вы посылаете запрос по протоколу HTTPS, вам нужен сертификат для HttpClient: HTTP: // stackoverflow.com/questions/22251689/make-https-call-using-httpclient –
глядя на это @KhanhTO спасибо за быстрый ответ – terbubbs
@KhanhTO, я бы предложил опубликовать, что в качестве ответа b/c это вполне может быть решением , я хотел бы также дать вам преимущество. – terbubbs