对于POST方法,我在LR中有这段代码(它正在工作):
web_custom_request(transname,
URL,
"Method=POST",
"TargetFrame=",
"Mode=HTML",
"Resource=0",
"Referer=",
EncodingType,
lr_eval_string(request),
LAST);
这段代码放在一个单独的.c文件中,并使用一系列与XML,数组,字符串数据相关的相关函数从user_init调用。
POST请求的URL在user_init中具有如下结构: URL = HTTPS:// {HOST} /aaa/bbb/page.asp
user_init也包含这段代码:
web_custom_request("Login_page",
"URL=http://{HOST}/api/04_00/Pr_NAME.asp",
"Method=POST",
"RecContentType=text/xml",
"Body="
"<?xml version=\"1.0\"?>"
"<Request xmlns=\"http://api.rr.com/Pr_NAME\">\r\n"
" <MethodRequest>\r\n"
" <AuthenticateUserRequest appID=\"value_appID\" password=\"value_password\">\r\n"
" <User>\r\n"
" <LoginName>value_LoginName</LoginName>\r\n"
" </User>\r\n"
" </AuthenticateUserRequest>\r\n"
" </MethodRequest>\r\n"
"</Request>\r\n",
LAST);
我需要一些额外的代码,以便将POST和GET请求发送到Web服务。现在它只发送POST请求。
有一些问题:
1)我应该如何更改此功能以获得发送两种类型的请求POST和GET的可能性?我应该在这个函数中添加哪些字符串?
2)我应该如何更改GET请求的URL?
我想,它应该是这样的:
URL=https://{HOST}/aaa/bbb/page.asp?param1=value1¶m2=value2...¶mN=valueN
但是我应该添加什么参数作为param1,param2,...,paramN?
如何在此URL构造中定义,需要多少和哪些参数?
我应该写这个结构:
URL=http://{HOST}/api/04_00/Pr_NAME.asp?appID=value_appID&password=value_password&LoginName=value_LoginName
或者我不应该在此结构中添加LoginName = value_LoginName?
3)如何在1个函数中将POST和GET两种方法结合起来,以便有可能从LR发送两种类型的请求POST和GET?
拜托,你能帮帮我吗?我是使用POST和GET方法和函数在LR中进行数据传输的新手。
答案 0 :(得分:1)
以下是一些答案(与LR完全无关)。 1)POST和GET是HTTP动词,告诉服务器您希望它对您的请求做什么。服务器应该做什么,而不是约定,没有规则。惯例是: GET - 告诉服务器:请给我与查询字符串中提供的参数相关的数据。 POST - 告诉服务器:这是请求正文中的一些数据,请用它做一些事情(通常但不总是创建一些事情的记录)。 没有意义在同一请求中发送两种类型的动词。 在任何情况下设置动词都使用“方法”参数(在您的示例中,它显示“Method = POST”,因此您可以将其更改为“Method = GET”。
2)GET请求有时需要参数。作为惯例,您不要在Body中发送这些参数,而是在名为querystring的结构中发送,该结构位于以“?”分隔的URL之后。查询字符串是参数名称及其值的列表。请谷歌“查询字符串”获取更多信息。您应该使用的参数是服务器所期望的参数。您必须向服务器创建者询问要发送的参数。
3)正如我上面提到的,这没有意义。
希望这有帮助。
答案 1 :(得分:0)
由于您可能已经记录了此对话,因此可以自然而然地问为什么您希望将应用程序代码中的请求方法更改为除部署之外的其他内容?这是您在部署和测试之间的测试中断,需要在测试结果中注明。
答案 2 :(得分:0)
请求'方法应该是POST或GET或其他类型的方法。不应该两者兼而有之。我知道你正在进行自学,但这违反了协议。