0

对于 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&param2=value2...&paramN=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) 如何将 POST 和 GET 两种方法结合到 1 个函数中,以便有可能从 LR 发送两种类型的请求,POST 和 GET?

拜托,你能帮帮我吗?我是使用 POST 和 GET 方法和函数在 LR 中传输数据的新手。

4

3 回答 3

1

以下是一些答案(与 LR 不完全相关)。1) POST 和 GET 是 HTTP 动词,它们告诉服务器您希望它对您的请求做什么。没有关于服务器应该做什么的规则,而是约定。约定是: GET - 告诉服务器:请给我与我在查询字符串中提供的参数相关的数据。POST - 告诉服务器:这是此请求正文中的一些数据,请对其进行处理(通常但不总是创建某事的记录)。在同一个请求中发送两种类型的动词是没有意义的。在任何情况下设置动词都使用“方法”参数(在您的示例中它显示“方法 = POST”,因此您可以将其更改为“方法 = GET”。

2)GET请求有时需要参数。作为惯例,您不会在正文中发送这些参数,而是在名为查询字符串的结构中发送这些参数,该结构位于由“?”分隔的 URL 之后。查询字符串是参数名称及其值的列表。请谷歌“查询字符串”了解更多信息。您应该使用的参数是服务器所期望的。您必须向服务器创建者询问要发送哪些参数。

3)正如我上面提到的,这没有意义。

希望这可以帮助。

于 2013-05-22T12:02:44.790 回答
0

由于您可能已经记录了此对话,因此很自然的问题会问您为什么要将应用程序代码中的请求方法更改为部署之外的其他方法?这是部署和测试之间的测试中断,需要在测试结果中注明。

于 2013-05-22T12:15:17.913 回答
0

请求的方法应该是 POST 或 GET 或其他类型的方法。不应该两者兼而有之。我了解您正在自学,但这是违反协议的。

于 2015-10-14T17:08:08.413 回答