如何使用openge requestBuilder同时使用param和json有效载荷进行http发布

问题描述

我需要使用参数和json负载将帖子发送到url。 例如,在邮递员中,我这样做了:

post http://address.com?key=As8941a1891389123812312381923并将正文以RAW格式放入json。在标头上,我只放了一个Content-type application / json,它工作正常。

在openge中,我尝试了以下方法

oJson = new JsonObject;
oJson:add('...blablabla',payloadData).
assign cURL = 'http://address.com?key=As8941a1891389123812312381923'.
oHttpClient = ClientBuilder:Build():Client.
Assign oRequest = RequestBuilder:Post(cURL,oJson)
                  :Content-type('application/json')
                  :AcceptJson()
                  :Request.
Assign oResponse = oHttpClient:Execute(oRequest).

但是,我从服务器收到403错误。 看来问题出在我尝试同时发送带有URL和json有效内容的?key = xxxx参数时,还是我在cUrl格式中犯了一个错误

在我没有JSON负载的情况下(并且可以正常工作)的其他帖子中,当有一些参数时,通常我必须分别发送参数,如下所示:

ASSIGN id = trim("db=" + trim(db) + "&lg=" + trim(lg) + "&sh=" + trim(sh) + 
"&sxml=" +      trim(argumentos)) 

htmlRequest = trim(id).
oRequestBody = new String(htmlRequest).

oRequest  = RequestBuilder:Post(trim(cURL),oRequestBody)
            :AcceptHtml()
            :Request.
oResponse = ClientBuilder:Build():Client:Execute(oRequest).

如何使用openge RequestBuilder同时发送参数“?key = ....”和json负载

有人可以帮忙吗?

预先感谢

解决方法

我已经检查了您的请求-是否带有JSON实体-在两种情况下,查询字符串都是POST的一部分。

我现在正在使用OpenEdge 12.2,结果是:

function question1(numberArray) {
  for (let i = 0; i < numberArray.length; i = i + 1) {
    number = numberArray[i];
    return number;
  }
}

function testQuestion1() {
  let testArray = [10,45,33,67,433,33];
  let answer1 = question1(testArray);
  if(question1(testArray) == 433) {
    console.log("Question 1:Found the largest");
  } else {
    console.log("Question1: For array ",testArray," returned ",answer1,"Which is not the largest");
  }

  let testArray2 = [10,-900,3000,22,33];
  let answer2 = question1(testArray);
  if(question1(testArray2) == 3000) {
    console.log("Question 1: Found the largest");
  } else {
    console.log("Question 1: For array ",testArray2,answer2,"Which is not the largest");
  }
}

这是我的测试例程:

POST /?key=As8941a1891389123812312381923 HTTP/1.1
Host: address.com
Content-Type: application/json
Content-Length: 16
Accept: application/json

{"blablabla":42}