У меня проблема, когда я пытаюсь отправить сообщение и отправить запросы в мой webapi (серверная часть написана на php и работает с mysql).
Если я пытаюсь отправить запрос на получение, проблем вообще нет, API отвечает правильно, проблема возникает, когда я пытаюсь отправить тело в запросе (поэтому я думаю, что публикация и размещение не удаются).
Я уверен, что мой API работает хорошо, пока я проводил тесты с почтальоном и другими клиентами, и все они правильно следуют этим запросам.
API отвечает 400 Bad Request, и я не знаю, что делать. Я сделал тот же API, кодированный в C #, и мой код на стороне клиента, есть ли несовместимость между универсальной платформой Windows и PHP API?
Мой метод PUT:
public async Task<int> updateFestivalDAL(Festival festival)
{
int resultado = 0;
Uri miConexion = (new clsMyConnection().getConnection());
HttpClient miCliente = new HttpClient();
String body = "";
HttpStringContent contenido;
HttpResponseMessage miRespuesta = new HttpResponseMessage();
try
{
body = JsonConvert.SerializeObject(festival);
contenido = new HttpStringContent(body, Windows.Storage.Streams.UnicodeEncoding.Utf8, "application/json");
miRespuesta = await miCliente.PutAsync(new Uri(miConexion + "/" + festival.ID), contenido);
if (miRespuesta.IsSuccessStatusCode)
{
resultado = 1;
}
}
catch (SqlException e)
{
throw e;
}
return resultado;
}
Это мое тело в запросе:
"{\"ID\":1,\"edicion\":\"Prueba año anterior\",\"nombre\":\"fgh\",\"fecha_inicio\":\"2017-10-01T00:00:00\",\"fecha_fin\":\"2017-10-03T00:00:00\",\"coordenadas\":\"asdf\",\"twitter\":\"\",\"facebook\":\"\",\"instagram\":\"\",\"web\":\"\",\"curiosidades\":\"\"}"
И это мой ответ API (значение переменной miRespuesta):
{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 2, Content:
Windows.Web.Http.HttpStreamContent, Headers:
{
Connection: close
Server: Apache/2.4.34 (Win32) OpenSSL/1.0.2o PHP/5.6.38
Date: Wed, 31 Oct 2018 21:47:36 GMT
X-Powered-By: PHP/5.6.38
}{
Content-Length: 0
Content-Type: text/html; charset=UTF-8
}}
Пожалуйста, помогите мне, если вы что-то знаете.
ОБНОВЛЕНИЕ: Когда я вижу содержимое переменной miCliente (с переменной httpclient), я вижу элемент списка с именем DefaultRequestHeaders. Может быть, есть проблема? Я должен изменить их, чтобы сделать их совместимыми с PHP?
ОБНОВЛЕНИЕ 2:
Я изменил два элемента дат (fecha_inicio, fecha_fin) в базе данных и в моем классе Festival, так что теперь они varchar (строка в классе), пытаясь решить, была ли проблема с анализом datetime, и попытаться сохранить как дату в базе данных, но все равно не сработало.
Почтальон успешно запросил:
PUT /festival/1 HTTP/1.1
Host: notrelevantbutwellformed.com
Content-Type: application/json
cache-control: no-cache
Postman-Token: 100313d6-7087-4712-8b93-17873e1db14b
{
"ID": "1",
"edicion": "fgh",
"nombre": "fgh",
"fecha_inicio": "2018-11-01",
"fecha_fin": "2018-11-01",
"coordenadas": "asdf",
"twitter": "asfd",
"facebook": "ffsd",
"instagram": "asrss",
"web": "noo va a petar",
"curiosidades": "sdfsdfdsf",
"url_logo": "",
"url_cartel": ""
}------WebKitFormBoundary7MA4YWxkTrZu0gW--