Как исправить код, чтобы корректно отправляло "form-data":
private static Request request = null;
private static OkHttpClient client= new OkHttpClient.Builder()
.cookieJar(new CookieJar() {
private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
cookieStore.put(url, cookies);
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> cookies = cookieStore.get(url);
return cookies != null ? cookies : new ArrayList<Cookie>();
}
}).build();
RequestBody formBody = new FormBody.Builder()
.add("user_name", "значение-1")
.add("user_pass", "значение-2")
.build();
request = new Request.Builder()
.url("https://сайт.ru/")
.post(formBody)
.build();
System.out.println(client
.newCall(request)
.execute().body().string());
Делаю точно такой же запрос через postman, но ответы сайта различаются. Может не правильно пишу в андройд или что-то пропускаю?? postman:
А запрос в коде postmana на java выглядит так:
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW");
RequestBody body = RequestBody.create(mediaType, "------
WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"user_name\"\r\n\r\nЗначение-1\r\n------
WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"user_pass\"\r\n\r\nЗначение2\r\n------
WebKitFormBoundary7MA4YWxkTrZu0gW--");
Request request = new Request.Builder().url("https://сайт.ru/").post(body).addHeader("content-type", "multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW").addHeader("Content-Type", "application/x-www-form-urlencoded").addHeader("Cache-Control", "no-cache").addHeader("Postman-Token", "2c124ba6-7bef-772d-404d-8136f5166b45").build();
Response response = client.newCall(request).execute();
При отправке из postman MediaType = multipart/form-data
, чтобы создать аналогичный запрос вручную, используйте MultipartBody.Builder:
RequestBody partFormBody = new FormBody.Builder()
.add("user_name", "значение-1")
.add("user_pass", "значение-2")
.build();
RequestBody formBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addPart(partFormBody)
.build();
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Когда делаю скрин dom-to-image все нормально, но не во всех браузерах работаетПытаюсь добавить html2canvas, чтобы скрины делать отдельно для safari, но они...
Здравствуйте! Вообщем я буду делать сайт с уровнями доступа (царь, барин, крестьяне) и смысл в том что царь поручает дело, одному из баринов,...