Я пытаюсь post
multipart form-data
запрос в Java для API.Я получаю 400
http код ошибки.Ниже моя конечная точка весной:
api весенней загрузки
@org.springframework.web.bind.annotation.PostMapping(value="register2")
public ResponseEntity<CoreResponseHandler> doRegister2(@RequestPart String json) {
System.out.println("~~~~~~ "+json+" ~~~~~~");
return null;
}
основной Java-код для потребления выше API
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONException;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) {
try {
URL url = new URL("http://localhost:8012/register2");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
conn.setRequestProperty("charset","utf-8");
conn.setRequestProperty("Content-Disposition","form-data;name='json'");
conn.setDoOutput(true);
conn.setDoInput(true);
JSONObject jsonObject = buidJsonObject();
setPostRequestContent(conn, jsonObject);
conn.connect();
System.out.println(conn.getResponseCode());
if(conn.getResponseCode()==200){
BufferedReader reader= new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
stringBuilder.append(line + "\n");
}
System.out.println(stringBuilder+" <<<<<<<<<<<<<<<<<<<<<<<<<" );
jsonObject=new JSONObject(stringBuilder.toString());
}
else{
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
stringBuilder.append(line + "\n");
}
System.out.println(stringBuilder+" <<<<<<<<<<<<<<<<<<<<<<<<<" );
System.out.println("ERRORERRORERRORERRORERRORERRORERRORERRORERROR"+conn.getResponseCode());
}
}catch(Exception ex) {
ex.printStackTrace();
}
}
private static JSONObject buidJsonObject() throws JSONException {
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("username", "13338912");
jsonObject.accumulate("encryptedPassword", "encpass");
jsonObject.accumulate("name", "fish");
jsonObject.accumulate("email", "fish@fish.com");
jsonObject.accumulate("status", "active");
return jsonObject;
}
private static void setPostRequestContent(HttpURLConnection conn,
JSONObject jsonObject) throws IOException {
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(jsonObject.toString());
writer.flush();
writer.close();
os.close();
}
}
ниже вывод, который я получил:
вывод
400
Страница ошибки Whitelabel
Это приложение не имеет явного отображенияfor / error, так что вы видите это как запасной вариант.
вт окт 09 13:51:00 IST 2018 Произошла непредвиденная ошибка (тип = неверный запрос, статус = 400). Запрашиваемая часть запроса 'json' отсутствует<<<<<<<<<<<<<<<<<<<<<<<<< ERRORERRORERRORERRORERRORERRORERRORERRORERRORROR400 </p>
I don't
хочу использовать сторонние зависимости, такие как okkhttp
и т. Д.
где моя логика неверна.пожалуйста, поправьте меня.Почему я не получаю http
статус 200
~~~~~~~~~~~~~ проблема кажется неразрешимой ~~~~~~~~~~~~~