Сбой запросов PUT и POST клиента UWP с PHP API - PullRequest
0 голосов
/ 01 ноября 2018

У меня проблема, когда я пытаюсь отправить сообщение и отправить запросы в мой 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--    
...