我在post方法中对HttpURLConnection遇到问题。当我尝试使用Post方法时,在get方法上一切正常。我收到此错误消息。线程“主”中的异常java.io.IOException:服务器返回的HTTP响应代码:URL的403
这是我的代码段。希望您能对此有所帮助。
URL url = new URL(my url/userInfo);
String encoding = Base64.getEncoder().encodeToString(("username:password").getBytes("UTF-8"));
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/plain");
connection.setRequestProperty("Authorization", "Basic " + encoding);
connection.setRequestProperty("x-csrf-token", "fetch");
String csrfToken = connection.getHeaderField("x-csrf-token");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
String output = in.readLine();
in.close();
String content = data // expected data to retrieve
URL url2 = new URL(my URL);//another url to push the data retrieve
HttpURLConnection connection2 = (HttpsURLConnection) url2.openConnection();
connection2.setDoInput(true);
connection2.setDoOutput(true);
connection2.setRequestMethod("POST");
connection2.setRequestProperty("Authorization", "Basic " + encoding);
connection2.setRequestProperty("Accept", "application/json");
connection2.setRequestProperty("x-CSRFToken", csrfToken);
connection2.setRequestProperty("cache-control", "no-cache");
OutputStream os = connection2.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write(data);//this is where the data will be pushed
osw.flush();
osw.close();
os.close();
想法是,我们首先需要从第一个链接获取x-csrf令牌和数据,这没关系。执行GET方法后,将发生POST方法。不幸的是,post方法不起作用。我收到上面显示的错误消息。顺便说一下,我们尝试在POSTMAN中执行一个post方法,它工作正常。
希望您可以为此提供帮助。
我们对此有答案吗?我在同一个问题上挣扎。能够成功地通过邮递员投递,但无法使用Java代码投递。有人可以帮忙吗。