【发布时间】:2019-06-23 07:22:44
【问题描述】:
我正在尝试使用正文和标题进行发布请求。以下是我经历过的一些变体,但在大多数情况下,我在服务器上遇到错误,说参数“key”没有传入。
我在邮递员中尝试了这个 api,它在那里工作。这就是我在 Java/Spring Boot 中定义方法头的方式:
@RequestMapping(value = "/getIssue", method = RequestMethod.POST)
public IssuePojo getIssue(@RequestParam("key") String key, HttpServletRequest request) {
以下是我的角度变化:
public getJiraIssue(key: string): Observable<any> {
let headers = new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': this.idToken });
let options = { headers: headers };
const paramsA = new URLSearchParams();
paramsA.set('key', key);
let params = new HttpParams().append('key', key);
// return this.http.post(this.urlEnvironment.jiraGetIssue(), params, this.getHeaders());
console.log("headers: ", this.getHeaders());
// let obj = {
// key: key
// }
var headersA = new Headers();
headers.append('Authorization', this.idToken);
let body = new HttpParams()
.set('key', key);
return this.http.post(this.urlEnvironment.jiraGetIssue(), body, {headers: headers});
// return this.http.post(this.urlEnvironment.jiraGetIssue(), null, {headers: this.getHeaders(), params: params});
}
似乎正在发送正文:
但这是我得到的错误:
timestamp: "2019-01-30T04:30:40.721+0000", status: 400, error: "Bad Request",…}
error: "Bad Request"
message: "Required String parameter 'key' is not present"
path: "/jira/getIssue"
status: 400
timestamp: "2019-01-30T04:30:40.721+0000"
trace: "org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'key' is not present
【问题讨论】:
-
OK:这样您就可以成功地从 Postman 查询 Jira,所以您知道 a) HTTP 标头应该是什么('Content-Type': 'application/json' 和 'Authorization' :XYZ),并且您知道正文应该是什么(像这样的 JSON:developer.atlassian.com/server/jira/platform/…)。到目前为止,一切都很好。问:谁在查询 Jira:你的 JS/Angular 前端,还是你的 Java/Spring boot 后端?问:您是否查看过正在发送的 HTTP(Fiddler 或 Wireshark)?
-
我是说我已经验证我的 Java API 正在通过 Postman 工作。 Java 正在查询 Jira
-
问:您是否能够在任何地方成功查询 Jira?爪哇?邮差?卷曲?问:您是否确认了 HTTP 正文 应该 的外观?我怀疑它可能应该是 JSON(如 here),并且 NOT 是像“key=WJC-7”这样的字符串。建议:验证消息格式。
-
是的,API 工作正常。我以不同的方式测试了我的方法,从 Java 和邮递员。如果我从方法中取出我的 Servlet,那么它就可以工作了。
标签: angular rest spring-boot