anonymous Log in
Search
Recents:
v3.0
csharp-l
webproc
22/10/20 02:20

manyarz

Replies: 5

tengo un webproc call protocol http   y main.  que quiere ser invocado
desde otra aplicacion mediante metodo get.
Ese metodo me lo impone el consumidor del servicio yo ya le ofreci
hacerlo con metodo post y me dijo que el usa get.
el consumidor me quiere enviar como parametro un json en el body del
request.
segun tengo entendido yo en mi webproc lo recibo con una variable del
tipo httprequest de genexus.
Pero tengo una duda, yo estoy haciendo una simulacion de otro
procedimiento que lo llama y no se como le tengo que mandar el parametro
json con genexus a una invocacion httpclient y que dicho parametro vaya
en el body del request.
yo se que si se lo mando en el query string es mandarselo en la misma
url, pero quien consume esto lo quiere mandar en el body del request.
si alguien puede ayudar agradecido estare.
-----------------------------------------
Para Suscribirse/Desuscribirse:
http://www.gxtechnical.com/cgi-bin/hforum.exe?2,3,30,11
Por consultas owner-csharp-l@gxtech.com.uy
Replies

leandro79337933

22/10/20 11:10
Hola Sergio, no lo probe, pero masomenos seria algo asi: &httpClient.Host = '127.0.0.1' &httpClient.Port = 80 &httpClient.AddHeader('Content-type','application/json') &httpClient.AddString('{"parm1":"abc", "parm2":1349, "parm3":"def"}') &httpClient.Execute('GET','webapp/procedure_rest.aspx') Slds On Wed, Oct 21, 2020 at 11:39 PM Sergio Rzeszytkowski

leandro79337933

22/10/20 12:13
Hola Sergio, sabes que me dejaste pensando sobre el metodo GET y los parametros en el Body, me hacía ruido, y buscando un poquito encontré que aunque no está prohibido (palabra fuerte), no es aconsejable. Hay un hilo interesante por aqui: https://stackoverflow.com/questions/978061/http-get-with-request-body Solo para que lo tengas en cuenta. Slds On Thu, Oct 22, 2020 at 8:10 AM Leandro Minatel

manyarz

22/10/20 16:41
Hola Leandro como andas? gracias por preocuparte y darme una respuesta. Pero te comento que por ese camino ya anduve y no funciona. llamandolo asi no lo recibo ni mediante una variable en el PARM de mi webproc  , ni tampoco mediante una variable &httpRequest.ToString()   del tipo httpRequest en cuanto al articulo https://stackoverflow.com/questions/978061/http-get-with-request-body es todo un tema hablado para otros lenguajes y la verdad es que yo quiero hacer un cliente que lo consuma desde genexus para probarlo , y no veo por donde lo puedo atacar. te agradezco mucho. El 22/10/2020 a las 8:10, Leandro Minatel

leandro79337933

22/10/20 17:16
Hola Sergio, luego de contestarte empecé a hacer unas pruebas y armé un PRC muy sencillo donde le puse Call protocol = HTTP. No le puse Main asi no me antepone la "a" pero no debería alterar las pruebas. *El codigo del PRC es asi:* """""""""""""""""""""""" If &httpRequest.Method = 'GET' // 'OK method' Else // 'Bad method' Endif &request_body = &httpRequest.ToString() // aqui viene el {"parm1":"abc", "parm2":1349, "parm3":"def"} desde el WebPanel // Armamos la respuesta &httpResponse.AddHeader('Content-Type', 'application/json') &response_body = '{' &response_body += '"Su Id": ' + &su_Id.ToString() + ',' &response_body += '"Mi Id": ' + &mi_Id.ToString() &response_body += '}' &httpResponse.AddString(&response_body) """""""""""""""""""""""" *Luego, arme un WebPanel para consumirlo con el siguiente código:* """""""""""""""""""""""" Event 'HomeMadeRESTService' &httpClient.Host = '127.0.0.1' &httpClient.Port = 8080 &httpClient.BaseUrl = '/CafeLindoJavaEnvironment/servlet/' &httpClient.AddHeader('Content-type','application/json') // &httpClient.AddHeader('Accept','application/json') // Quizas necesites agregar esto, en mi caso no fue necesario &httpClient.AddString('{"parm1":"abc", "parm2":1349, "parm3":"def"}') &httpClient.Execute('GET','com.cafelindo.homemaderestservice') &response_body = &httpClient.ToString() Endevent """""""""""""""""""""""" y, en &response_body queda el JSON que arme en el PRC. La unica diferencia es que yo uso Java. Voy a probar con Net a ver si funciona de la misma manera. También tenes muchas opciones para hacer pruebas, yo uso mucho *curl*, hay un port para Windows, buscalo por google. Sino, tenes RESTClient que lo podes descargar desde aqui: http://code.fosshub.com/WizToolsorg-RESTClient/downloads. Podes usar httpie tambien, o los mismos navegadores (a veces chusmeo con Firefox) para hacer los requests. Muchos usan tambien Postman o SoapUI pero me parecen muy pesados para hacer un simple request. Slds On Thu, Oct 22, 2020 at 1:42 PM Sergio Rzeszytkowski

manyarz

22/10/20 19:59
gracias Leandro, voy a probar de hacerlo asi y veo si tengo suerte. muchas gracias por la preocupacion en la respuesta y la molestia de probarlo. abrazo grande. Te cuento como me va, ahora cuando lo pruebe. El 22/10/2020 a las 14:16, Leandro Minatel


Back to csharp-l