none
Enviar variable data por POST RRS feed

  • Pregunta

  • Hola,

    Nunca he realizado cosas de este tipo, y necesito orientación, ojalá me puedan ayudar.

    Tengo que mandar unos datos a una web y esta es la información que me mandan:

    Esto es lo que iría en la variable data, se enviaría por POST a  /wp-json/wc/v3 en las cabeceras tiene que mandar la autenticación, que varía si es por http o https cuando este en https será con: Basic Authentication

      "meta_data": [
        {
          "key": "calibre",
          "value": "50"
        },
        {
          "key": "color",
          "value": "azul"
       
    },
        {
          "key": "color_lente",
          "value": "verde"

        }

    (Corto por que es muy largo...)

    He visto ejemplos como este:

    https://docs.microsoft.com/es-es/dotnet/framework/network-programming/how-to-send-data-using-the-webrequest-class

    pero no se que es el content type, tampoco donde poner usuario y contraseña ni la variable.

     

    miércoles, 13 de mayo de 2020 8:48

Respuestas

Todas las respuestas

  • Hola J.Ramon

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, te comparto a continuación los siguientes enlaces que contienen documentación oficial y casos similares al que nos estas reportando. 

    Este mismo Documento que enviaste te ayuda para hacer lo que quieres 

    https://docs.microsoft.com/es-es/dotnet/framework/network-programming/how-to-send-data-using-the-webrequest-class?redirectedfrom=MSDN


    Este documento te ayuda a entender el  request.ContentType = "application/x-www-form-urlencoded";

    https://docs.microsoft.com/es-es/dotnet/api/system.web.httprequest.contenttype?view=netframework-4.8#System_Web_HttpRequest_ContentType

    Y estos link tambien traen ejemplos sobre como utilizar el POST

    POST form , https://www.example-code.com/vbnet/http_formSubmitPost.asp

    Por favor déjame saber si puedo ofrecerte una mejor respuesta   

    Gracias por usar los foros de MSDN. 

      

    Andres Aguilar

      

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    • Marcado como respuesta J.Ramon lunes, 18 de mayo de 2020 8:43
    miércoles, 13 de mayo de 2020 17:47
    Moderador
  • Hola Andres Aguilar Masis,

    Estuve probandolo pero siempre me devuelve error 401(No autorizado)

    Pongo una imagen del servidor cuando accedo al Link que me mandaron:

    Access-Control-Allow-Headers: Authorization, Content-Type
    Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages
    Content-Length: 115
    Content-Type: application/json; charset=UTF-8
    Date: Wed, 13 May 2020 09:23:46 GMT
    Link: <http://intranet.XXX.com:18400/wp-json/>; rel="https://api.w.org/"
    Server: Apache/2.4.6 (CentOS) PHP/7.3.13
    Vary: Origin
    X-Content-Type-Options: nosniff
    X-Powered-By: PHP/7.3.13
    X-Robots-Tag: noindex
    
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding: gzip, deflate
    Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
    Connection: keep-alive
    Host: intranet.kiobus.com:18420
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
    

    Y este es el código que estaba probando para ver si accedia.
     'Instanciamos WebRequest
            Dim request As WebRequest = WebRequest.Create("http://intranet.XXXX.com:18400/wp-json/wc/v3/products")
            
            'Creamos las credenciales
            Dim credentials As New NetworkCredential
            credentials.Domain = "http://intranet.XXXX.com:18400/wp-json/wc/v3/products"
            credentials.UserName = "XP_ce8a4dd12f258ffaf267350c53783c1855710e60"
            credentials.Password = "XD_9fe6f242b1752c4ba1de855ebb28fcf6adcadd12e"
    
            'Le pasamos las credenciales
            request.Credentials = credentials
    
            request.Method = "POST"
            request.ContentType = "application/json"
            'request.ContentLength = byteArray.Length
            'Instanciamos para ver respuesta
            Dim response As WebResponse
            response = request.GetResponse()
    
            response.Close()

    ContentType lo puse asi por lo que veo en el server.

    Esto es lo que no entendí bien que me dijeron:
    en las cabeceras tiene que mandar la autenticación, que varía si es por http o https cuando este en https será con: Basic Authentication

    No se si estoy haciendo algo mal o si tengo que mandar el JSON para poder autenticar

    Saludos!



    • Editado J.Ramon jueves, 14 de mayo de 2020 9:50
    jueves, 14 de mayo de 2020 9:49
  • Hola  J.Ramon,

      

    Te comento el error 401 es que no has hecho la autenticacion, estas tratando de accender sin ID y password.

     

    Te comparto los siguientes enlaces.

    Info sobre el error 401

    https://www.lifewire.com/401-unauthorized-error-what-it-is-and-how-to-fix-it-2622934

    Autentication con HTTP

    https://www.example-code.com/vbnet/http_authentication.asp

      

    Seguimos buscando una mejor solución a tu consulta 

    Gracias por usar los foros de MSDN. 

      

    Andres Aguilar 

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    jueves, 14 de mayo de 2020 15:51
    Moderador
  • Hola

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las respuestas proporcionadas?  

     

    Gracias por usar los foros de MSDN. 

      

    Oscar Navarro

    jueves, 14 de mayo de 2020 17:39
    Moderador
  • Andres Aguilar Masis

    Estuve probando el código de Chilkat y me da el mismo error... 401.

    Según pude ver, puede ser por varios motivos, uno de ellos que no accedo con user/passwor, pero descarto esta opción, ya que lo he probado con varios códigos y siempre obtengo el mismo resultado.

    Prueba1:

      'Instanciamos WebRequest
            Dim request As WebRequest = WebRequest.Create("http://intranet.XXXX.com:99999/wp-json/wc/v3/products")
            'request.PreAuthenticate = True
            'request.Credentials = New NetworkCredential("user","password")
    
            'Creamos las credenciales
            Dim credentials As New NetworkCredential
            credentials.Domain = "http://intranet.XXXX.com:99999/wp-json/wc/v3/products"
            credentials.UserName = "user"
            credentials.Password = "password"
    
            'Le pasamos las credenciales
            request.Credentials = credentials
    
            'Instanciamos para ver respuesta
            Dim response As WebResponse
            response = request.GetResponse()
    
            'MsgBox(response.GetResponseStream)
    
            response.Close()

    Prueba 2

       Dim URL As String = "http://intranet.XXXX.com:99999/wp-json/wc/v3/products"
                Dim http As HttpClient = New HttpClient
    
                Dim JsonObject As Newtonsoft.Json.Linq.JObject = New Newtonsoft.Json.Linq.JObject()
                JsonObject.Add(New JProperty("name", "Premium Quality"))
                JsonObject.Add(New JProperty("slug", "premium-quality-19"))
                JsonObject.Add(New JProperty("type", "simple"))
                JsonObject.Add(New JProperty("status", "publish"))
                
                Dim oString As StringContent = New StringContent(JsonObject.ToString)
    
                Dim Encoded As String = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes("user:password"))
    
                http.DefaultRequestHeaders.Add("Authorization", "Basic " + Encoded)
                
                Dim response As HttpResponseMessage = http.PostAsync(URL, oString).Result
    
                Dim res As String = response.Content.ReadAsStringAsync.Result
    
                MsgBox(res.ToString)
                MsgBox(response.StatusCode)
    Con la prueba2 obtengo el resultado de: No tine permiso para crear usuarios.

    Como comenté, nunca habia conectado con un webservice, pero creo que el código esta correcto... Si alguien ve algo erroneo, agradecería me lo comentara =)

    Contactaré con el proveedor del servidor, y que me confirme que los datos son correctos..

    Gracias por la información Andrés.


    viernes, 15 de mayo de 2020 8:50
  • Parece ser que el error estabe en el lado del servidor... me han pasado usuario y password nuevos y listo!

    Gracias por la información.

    lunes, 18 de mayo de 2020 8:43