使用 GX17/ .NET 的 Web 服务 REST

web service REST with GX17/ .NET

提问人:Valeria Carballo 提问时间:10/3/2023 最后编辑:Valeria Carballo 更新时间:10/25/2023 访问量:91

问:

我尝试使用 Genexus 生成 Web 服务 REST,当我尝试使用它时,结果是来自 SoapUI 或 Postman 的错误 404。当我尝试从 GX 中的 Web 面板使用它时,服务器上的错误是 IHttpHandler Exception。

该过程具有以下属性:

Expose as web server: TRUE
REST Protocol: TRUE
Generate OpenAPI interface: TRUE 

我试着这样消费它:http://myHostNameOrIPAddress/MyVirtualDir/ws_procName?parm=value 或 http://myHostNameOrIPAddress/MyVirtualDir/ws_procName.aspx?parm=value

我不知道我是否必须放置“.aspx”,因为正如 GXWiki 所说,该过程不是主要的。我还试图知道使用此 URL 的 ws 是否处于活动状态:

http://myHostNameOrIPAddress/MyVirtualDir/ws_procName.aspx?wadl

在没有任何成功之后,我尝试使用带有 httpclient 的 gx Web 面板来使用它,如下所示:

&HttpClient.Host = "http://myHostNameOrIPAddress" 
&HttpClient.BaseUrl= "/MyVirtualDir/"
&HttpClient.Port   = 80 
&HttpClient.Secure = 0 
&HttpClient.AddHeader("Content-Type", "application/json; charset=utf-8") 
&JsonSend = &ws_sdtInput.ToJson() //&ws_sdtInput is the sdt of the input parameter after import the OpenAPI 

&HttpClient.AddString(&JsonSend.Trim()) 
&HttpClient.Execute("POST", "/messages/ws_procName.json") 
&JsonResponse = &ws_sdtOutput.ToJson()  //&ws_sdtOutput is the sdt of the output parameter after import the OpenAPI

&JsonResponse = &HttpClient.ToString() 

有人可以帮助我吗?提前致谢 :)

.NET REST Web-services genexus

评论

0赞 Dai 10/3/2023
您尚未发布任何代码...
1赞 ealmeida 10/4/2023
如果您可以指定您使用的是 Java 还是 .NET 生成器,以及您正在使用的 Genexus 版本,那就太好了。404 错误意味着找不到它,原因可能是: * 您在使用它时忘记在 URL 中包含 \rest\。* 您没有安装 URLRewrite。* 您正在使用 Tomcat 10.1 并使用 GX18 之前的版本生成。如果您能在执行上下文中添加一些附加信息,那将会很有帮助,这样我们就可以更好地为您提供帮助。
0赞 Community 10/4/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。
0赞 Valeria Carballo 10/4/2023
谢谢@ealmeida回复我的帖子!!我正在使用 Gx 17 通过 IIS7 生成 .Net。消费时,我必须将 \rest\ 放在 URL 中的什么位置?URLRewrite安装在服务器中,但我真的不知道必须如何设置配置属性。
0赞 Valeria Carballo 10/5/2023
我编辑我的问题是为了添加一些关于情况的额外信息,希望能让你更容易理解它。谢谢!

答:

0赞 ealmeida 10/8/2023 #1

如果您从未使用过该服务,并且已经在生成 OpenAPI,则可以将 default.yaml 文件导入到 Postman 等工具中以使用 REST 服务。 在那里,它将向您展示如何编写 URL 以及如何传递参数。 一开始需要做一些工作,但通过查看文档,您应该不会有任何问题。

您可以阅读 https://wiki.genexus.com/commwiki/servlet/wiki?15314,HowTo%3A+Consume+a+Procedure+exposed+as+a+Rest+service

评论

0赞 Valeria Carballo 10/11/2023
非常感谢!!我会看一下文档,然后用你的建议再试一次。问候!