gpt4 book ai didi

grails - 意外错误400:错误请求HttpBuilder POST请求

转载 作者:行者123 更新时间:2023-12-02 14:02:16 25 4
gpt4 key购买 nike

我正在使用以下代码将JSON对象过帐到URL常规:

def http = new HTTPBuilder( 'myURL' )

// perform a POST request, expecting JSON response data
http.request( POST, JSON ) {
uri.path = myPath
uri.query = [ service_key:'1.0', event_type: 'trigger' ]
headers.'Content-Type' = 'application/json'

// response handler for a success response code:
response.success = { resp, json ->
println resp.status

// parse the JSON response object:
json.responseData.results.each {
ret = json.getText()
println 'Response data: -----'
println ret
println '--------------------'
}
}

// handler for any failure status code:
response.failure = { resp ->
println "Unexpected error: ${resp.status} : ${resp.statusLine.reasonPhrase}"
}
}

Ajax Code that works:(EDITED)
$.ajax({ url:'https://events.pagerduty.com/generic/2010-04-15/create_event.json',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({

service_key: "1379ca7018e94343bf5fa5add9fa42eb",
incident_key: "srv01/HTTP",
event_type: "trigger",
description: "TEst Test"
}),
dataType:'json'
});
alert('Message Sent');

每次遇到意外错误:400:错误的请求,如果我使用$ .ajax()执行此操作,它也会起作用。我在响应中得到HTTP:200 OK。这是怎么回事?

谢谢。

最佳答案

在ajax示例中,您要传递4个元素作为JSON主体,最终将像这样:

{"service_key": "1379ca7018e94343bf5fa5add9fa42eb",
"incident_key": "srv01/HTTP",
"event_type": "trigger",
"description": "TEst Test"}

但是在常规示例中,您仅传递了两个查询字符串参数(将在uri上传递)。

您可能应该更换
uri.query = [ service_key:'1.0', event_type: 'trigger' ]

与:
body =  [service_key:'1.0', incident_key: "srv01/HTTP", event_type: 'trigger' description: "TEst Test"]

您还应该在故障响应处理程序中输出响应数据,因为许多服务将为您提供说明您不遵守服务契约(Contract)的原因。

关于grails - 意外错误400:错误请求HttpBuilder POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com