【发布时间】:2016-10-04 08:12:15
【问题描述】:
我不知道为什么,但是我用 Vertx 做的帖子根本不起作用。错误一直是 404。
我在纯 Java 中使用的相同链接和正文,我得到了服务器的响应。我做错了什么?
HttpClient client = vertx.createHttpClient();
HttpClientRequest request =
client.post("https://login.windows.net/common/oauth2/token").handler(res->{
System.out.println(res.statusCode());
}).putHeader(HttpHeaders.CONTENT_LENGTH,String.valueOf(buffer.length()))
.putHeader(HttpHeaders.CONTENT_TYPE,"application/x-www-form-urlencoded").write(buffer);
request.end();
我基本上是在使用 Azure 进行身份验证,对于响应,我应该得到一个带有令牌和其他信息的 JSON。使用纯 Java 可以,但我们需要让它与 Vertx 一起使用。
编辑 - 此代码有效 - 我得到 JSON,但不是顶点
String url = "https://login.microsoftonline.com/common/oauth2/token";
URL obj = null;
obj = new URL(url);
HttpsURLConnection con = null;
con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Host", "login.microsoftonline.com");
con.setRequestProperty("Cache-Control", "no-cache");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// Send post request
con.setDoOutput(true);
DataOutputStream wr = null;
wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
int responseCode = 0;
responseCode = con.getResponseCode();
System.out.println("\nSending 'POST' request to URL : " + url);
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = null;
in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
//print result
System.out.println(response.toString());
【问题讨论】:
-
您能否编辑您的问题以使用 JDK HttpClient 显示您的代码,以便我们进行比较?
-
你从哪里得到 404?你是从
login.windows.net那里得到的吗? -
System.out.println(res.statusCode());给我 404,但我不确定请求是否到达 login.windows.net.... 我不确定它是否发送到我的网络之外。
-
@tsegismont 问题已编辑
-
为了完整起见,在您的示例中,您使用了 2 个不同的 URL,这是预期的吗?
标签: java azure post http-post vert.x