使用PHP API的UWP客户端PUT和POST请求失败

时间:2018-10-31 21:54:48

标签: c# uwp put bad-request

当我尝试发送帖子并将请求发送到我的webapi时遇到问题(服务器端使用php编码,并且可与mysql一起使用)。

如果我尝试发送get请求,则完全没有问题,API会正确响应,而当我尝试发送请求中的正文时,就会出现问题(这就是我认为发布和放置失败的原因)。

只要我与邮递员和其他客户进行了测试,并且他们对这些请求都遵循正确的方式,我确信我的api可以正常工作。 API响应400错误请求,我不知道该怎么办。我已经用C#编写了相同的api,并且在客户端工作中编写了我的代码,通用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: 我已经在数据库和Festival类中更改了两个日期元素(fecha_inicio,fecha_fin),因此它们现在是varchar(类中的字符串),尝试问题是否是解析日期时间并尝试将其保存为日期在数据库中,但仍然无法正常工作。

邮递员成功请求:

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--    

0 个答案:

没有答案