我有一个curl命令
curl -F 'client_id={client id}' \
-F 'client_secret={client secret}' \
-F 'code={temporary token}' \
-F 'grant_type=authorization_code' \
https://cloud.lightspeedapp.com/oauth/access_token.php
取自https://developers.lightspeedhq.com/retail/authentication/access-token/
我尝试用java中的jetty请求来调用这个api。
URIBuilder uriBuilder = new URIBuilder("https://cloud.lightspeedapp.com")
.setPath("/oauth/access_token.php");
MultiPartContentProvider contentProvider = new MultiPartContentProvider();
contentProvider.addFieldPart("grant_type", new StringContentProvider("authorization_code"), null);
contentProvider.addFieldPart("client_id", new StringContentProvider(lightspeedRId), null);
contentProvider.addFieldPart("client_secret", new StringContentProvider(lightspeedRSecret), null);
contentProvider.addFieldPart("code", new StringContentProvider(temporaryToken), null);
contentProvider.close();
Request request = httpClient.POST(uriBuilder.build())
.content(contentProvider)
.header("Content-Type", "multipart/form-data");
但是,它不起作用。我完全不知所措,不知道我需要改变这里。
编辑:我也尝试了一个FormContentProvider
,得到了同样的结果。
Fields fields = new Fields();
fields.put("grant_type", "authorization_code");
fields.put("client_id", lightspeedRId);
fields.put("client_secret", lightspeedRSecret);
fields.put("code",temporaryToken);
FormContentProvider contentProvider = new FormContentProvider(fields);
1条答案
按热度按时间gxwragnw1#
好吧,事实证明,问题是在请求的末尾设置了“Content-Type”头。
没有那个,它就像这样完美地工作。
我之所以首先设置该头文件,是因为documentation的这一部分。
所以是的,事实证明光速只是有糟糕的文档。让这成为一个警示故事。