Principales respuestas
Enviar variable data por POST

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.
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
Este documento te ayuda a entender el request.ContentType = "application/x-www-form-urlencoded";
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
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
Este documento te ayuda a entender el request.ContentType = "application/x-www-form-urlencoded";
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
-
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 AuthenticationNo 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
-
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.
-
-
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.
-