none
Executar metodo "POST" na requisição httpWebRequest RRS feed

  • Pergunta

  • Olá,

    estou tentando gravar os dados de um objeto numa aplicação web que tenho acesso a ela através de uma API. E fiz uma classe para encapsular todos os métodos em que eu necessitar. E o seguinte método insere todos os campos da minha tabela em branco.

     Public Function doCreate(objectURL As String, objecto As Object) As String
    
            Me.setRequestMethod("POST", objectURL)
            ' Create POST data and convert it to a byte array.
            Dim serializer As New JavaScriptSerializer()
            Dim postData As String = serializer.Serialize(objecto)
            Console.WriteLine("_____________________________________________________________________________________")
            Console.WriteLine(postData)
            Dim byteArray As Byte()
    
            byteArray = Encoding.UTF8.GetBytes(postData)
            postRequesT.ContentLength = byteArray.Length
    
            Dim dataStream As Stream = postRequesT.GetRequestStream()   ' Set the ContentLength property of the WebRequest.
            dataStream.Write(byteArray, 0, byteArray.Length)            'parece que esta linha é que esta gerando o problema Write the data to the request stream.
    
            dim postResponse = DirectCast(postRequesT.GetResponse, HttpWebResponse)
            ' Releases the resources of the response.
    
            'postResponse.Close()
            Console.WriteLine(postResponse.StatusCode)
            'zzdataStream.Close()
            Return postResponse.StatusCode
    
        End Function
    
    'metodo
    _______________________________________________________
    Public Sub setRequestMethod(requestMethod As String, objectURL As String)
    
            Me.setURL_Object(objectURL)
            postRequesT.Method = requestMethod 'consulta atrés do metodo GET do HttpRequest
            postRequesT.KeepAlive = True
            postRequesT.ContentType = "application/json"
            postRequesT.Headers.Add("X-Knack-Application-Id: " & kn_appID)
            postRequesT.Headers.Add("X-Knack-REST-API-Key: " & kn_APIKey)
        End Sub
    
    ____________________________________________________
    ~Public Sub setURL_Object(objectURL As String)
            Me.postRequesT = DirectCast(WebRequest.Create("urlBase" & objectURL), HttpWebRequest)
        End Sub
    


    O estado retornado pelo método

    doCreate(objectURL As String, objecto As Object) As String

    é "200", o que indica que a operação foi executada com sucesso. Deve ser algo relacionado ao envio ou conversão da string em dataStream?

    Obrigado, Best regards!


    • Editado acamilo quarta-feira, 16 de novembro de 2016 06:11
    terça-feira, 15 de novembro de 2016 06:44

Todas as Respostas

  • acamilo,

    Não identifiquei onde você cita qual problema acontece.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 15 de novembro de 2016 09:28
  • O erro é, o método inseri dados na minha aplicação através do API disponibilizado mas coloca todos campos em branco ou seja com a String vazia e o estado retornado é 200 e não 201, que indica que a requisição criou um objecto

    Obrigado!

    quarta-feira, 16 de novembro de 2016 06:15
  • Qual a estrutura e tipo do objeto que está enviado? E qual a estrutura e tipo do objeto no lado da API?

    Normalmente quando isso acontece é porque o ModelBinder não conseguiu fazer a ligação entre as propriedades, seja por diferença no nome e/ou tipo.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 16 de novembro de 2016 10:24