我有一个 Groovy 脚本,它使用 URLConnection 来处理 GET 请求(在本例中是为了获取身份验证令牌);
URLConnection loginURI = new URL("www.myaddress.fish").openConnection();
loginURI.setRequestProperty("Authorization","me:you");
response = loginURI.getInputStream();
Run Code Online (Sandbox Code Playgroud)
没什么复杂的,当响应为 200 或类似值时,此代码可以正常工作。回复包含我需要取得进展的详细信息。
但是,有时响应是 4xx 响应(最常见的是来自无效授权标头的 400 Bad Request),并且通过 SOAPUI 或类似的方式运行相同的请求,我可以看到响应正文包含有用的信息(例如“您的用户名不正确”) ')。我希望能够捕获有用的信息进行处理,但我不知道该怎么做。
我尝试过传统的“try/catch”想法,但我得到的是 Java 异常而不是响应正文。我愚蠢地尝试了沼泽标准
println response.text
Run Code Online (Sandbox Code Playgroud)
在 catch 部分,但这根本不起作用。假设响应正文存储在某处,我如何读取它?
我有一些示例C代码,我希望这些代码可以适应我的需求。在此之前,我尝试按原样编译示例。C代码包含#include参考,我可以在'inc'目录中找到.h文件。还有一个对应的“ lib”目录。我正在努力寻找需要编译代码的命令行。
到目前为止,我已经设法做到以下几点;
gcc -o amqsinqa -I/opt/mqm/inc amqsinqa.c -L/opt/mqm/lib -lcmqc
Run Code Online (Sandbox Code Playgroud)
但是它“找不到-lcmqc”。我已经在lib中查看了,很正确地没有cmqc。如何确定这里需要的-l选项?
代码看起来很简单,有include引用;
#include <cmqc.h>
Run Code Online (Sandbox Code Playgroud)
还有电话本身;
MQCONN(QMgrName,&Hcon,&CompCode,&CReason);
Run Code Online (Sandbox Code Playgroud)
如果我在命令行中省略了-l选项,我会得到;
undefined reference to 'MQCONN'
Run Code Online (Sandbox Code Playgroud)
这不足为奇。MQCONN存在于cmqc.h中。