Consumo WebService REST do Protheus

Boa tarde,

Criei um webservice REST e validei o consumo dele com o POSTMAN, esta funcionando muito bem, estou com um problema ao tentar consumir o mesmo webservice por um código em PHP.

Exportei do POSTMAN o código em PHP cURL porém estou com problema no parâmetro CURLOPT_POSTFIELDS que é onde passo o body com os parâmetros em JSON para o webserice.

O postman exporta o parâmetro desta forma:

CURLOPT_POSTFIELDS => "{\r\n\t\"PSW\":\"2ec354030cfac7d46b966a70e2622063\",\r\n \"ID\": \"000654\",\r\n \"IDCNAB\": \"0000353101\",\r\n \"PREFIXO\": \"2\",\r\n \"NUMERO\": \"003333\",\r\n \"PARCELA\": \"00B\",\r\n \"DATA\": \"05/11/2019\",\r\n \"DIVISAO\":5\r\n}"

com os caracteres \r\n se eu tentar limpar este código tirando apenas estes caracteres, ficando desta forma:

CURLOPT_POSTFIELDS => '{"PSW":"2ec354030cfac7d46b966a70e2622063","ID":"659898565479986565478","IDCNAB":"0000353091","PREFIXO":"3","NUMERO":"200001","PARCELA":"00A","DATA":"07/11/2019","DIVISAO":"5"}'

O webservice me retorna o seguinte erro: {"message":"The method specified in the request is not allowed."}

Alguem saber porque só esta mudança neste parâmetro causa este erro no retorno do webservice?

Pedro, acredito que o problema não se deve a esses caracteres, pois na verdade são apenas caracteres de quebra linha, scape para utilização de aspas duplas etc.

Pedro, verificar se na declaração do seu WSMETHOD qual verbo você está utilizando, se for GET como no caso **WSMETHOD GET TESTE** trocar pelo verbo POST ficando **WSMETHOD POST TESTE** em seu código ADVPL.

Espero ter ajudado!

Boa tarde Pessoal,

So dando um feedback que consegui resolver a questão, não era problema no webservice mas sim no código que estava utilizando na requisição.

O erro estava na propriedade "Content-Length" que quando exportei do Postman estava com um valor fixo que correspondia ao tamanho da string de parâmetros, por isso quando alterava a string apresentava erro na requisição, corrigi o meu código para alimentar esta propriedade para o tamanho exato da string JSON e a requisição foi realizada com sucesso.

Obrigado pelas respostas.

Bom dia, você me lembrou essa outra pergunta: Retorno diferente do POSTMAN