【问题标题】:How to solve HTTPError: 400 Client Error: Bad Request for URL inRobot Frame work如何解决 HTTPError: 400 Client Error: Bad Request for URL inRobot Frame work
【发布时间】:2021-09-14 17:23:52
【问题描述】:

我知道有很多类似的问题可用,但没有一个有效。 有人可以告诉我下面的测试用例是否有任何语法错误

Create Token
    Create Session      testsession        ${baseUrl}       verify=true
    ${body}=    create dictionary    clientId=unittest.cc.client        clientSecret=RyDQ$xxxxxRtv
    ${header}=  create dictionary    Content-Type=application/json
    ${resp}=    POST On Session    testsession    ${reqUri}    json=${body}    headers=${header}    params=${ApiKeyParameter}
    ${source data}=    Evaluate     json.loads("""${resp.content}""")    json
    ${token}=   Set Variable   ${source data['accessToken']}

   #No errors Uptill this much - Bearer token creation was successful after that getting error while using it

    ${header}=   create dictionary       Authorization=${tpre} ${token}     Content-Type=application/json      cookies=ss-id=KF84fFy4txxxxxxxxx76i; ss-pid=StDTDxxxxxxxxxxxxn7r
    ${body}=    get file    API/data.txt
    log to console    ${header}
    ${resp}=    post on session     testsession     /orders     json=${body}    headers=${header}
    log to console    ${resp.status_code}

问题是每次我运行测试时都会收到 400 错误。下面是 POSTMAN 提供的 Python 代码和使用的标头的屏幕截图。现在我不确定如何在我的 python 或机器人框架中获取 HOST 标头。 如果需要任何其他详细信息,请告诉我。完成获取或发布请求时,我不确定 URL 格式中的标头 有什么办法可以查到吗?

import requests
import JSON

url = "https://domain:10001/orders?format=json"

payload = json.dumps({ Can ignore this part
})
headers = {
  'Authorization': 'Bearer xxx',
  'Content-Type': 'application/json',
  'Cookie': 'ss-id=xxx; ss-pid=xxx'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

【问题讨论】:

  • 这一切都在您发送到服务器的实际数据中 - 标头和有效负载,这是您在问题中跳过的部分。错误 400 表示服务器对该数据“不满意”,它存在问题;最简单的方法是检查服务器的日志,如果它写了拒绝的原因。 ${tpre} 的值是多少 - 它应该是字符串 Bearer,您可能想直接使用它,而不是 var。您确定该 txt 文件的内容是正确的 json 字符串吗?如果不是,那将是服务器拒绝请求的另一个原因。
  • 我猜是这个:clientId=unittest.cc.client。您将 clientid 设置为文字字符串“unitest.cc.client”。
  • @TodorMinakov 这是一个不记名令牌,所以我为变量${tpre}分配了一个“不记名”的预值
  • @BryanOakley 是的,这可能是感谢您指出的原因之一,让我检查一次。再一次,正如 TodorMinakov 所说,正文可能是让我检查响应内容的原因之一,肯定有错误消息。很快就会回来。
  • @TodorMinakov 由于一些额外的空间,错误出现在正文的格式中。感谢您指出了这一点。布莱恩奥克利也谢谢你:)

标签: api postman robotframework


【解决方案1】:

如果大家都遇到过此类问题,请不要忘记检查您发送的 JSON / XML 的正文。 我的解决了,因为我将转储 JSON 保存在一个文本文件中,所以在从文件中读取时,我的代码在前面添加了一些额外的空格,所以我收到了 400 错误。

如需更多信息,请尝试记录 响应内容,它必须向您显示错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多