Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2017, 14:04   #1
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
Лампочка Не проходит multipart/form-data запрос

Снифаю запросы в программе, делаю запрос абсолютно тем же образом, получаю в ответ ошибку от сервера "invalid request".
Прилагаю Raw-данные запроса из программы:

Код:
Запрос:
POST https://upload5.ask.fm/upload/api-avatar HTTP/1.1
Host: upload5.ask.fm
Connection: keep-alive
Accept-Encoding: gzip
Content-Type: multipart/form-data; boundary=----------------Oj32q21O4TOH01nt
Content-Length: 288858
User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36

------------------Oj32q21O4TOH01nt
Content-Disposition: form-data; name="rid"

1506766817980
------------------Oj32q21O4TOH01nt
Content-Disposition: form-data; name="specs"

U2FsdGVkX1+SB02lwEnGNm0KNuUAQeGCuhiZcWcnc47c1/gX0PiR0hQ0iWBBBSJiEFJ0n/5s7j0WPn0j9WUJVE+kwRe4OACdCbP0QpqMQniWcOLyNQR7Up6Fkhx1aaK1pjfQfwHAu4LU4UDDlWAWdgJoNxnualwgtBCskIP+npCWsbNB7hdI0icZQmaeUT37x5PyTj4hBoMm1LKV9qF2pqJNxteDnSLOVTZGNsxqfq0=
------------------Oj32q21O4TOH01nt
Content-Disposition: form-data; name="file"; filename="D:\files\pictures\dolina-sent-dzhons-ozernyy.jpg"
Content-Type: image/jpeg

Данные изображения...
------------------Oj32q21O4TOH01nt--

Ответ:
HTTP/1.1 200 OK
Date: Sat, 30 Sep 2017 10:20:19 GMT
Content-Type: application/json
Content-Length: 296
Server: Ask.FM Web Service

{"thumbUrl":"https://akimg0.ask.fm/502/5b4ec/2565/41ef/a47a/d37f75c75879/thumb/6708449.jpg","largeUrl":"https://akimg0.ask.fm/502/5b4ec/2565/41ef/a47a/d37f75c75879/large/6708449.jpg","status":"ok","avatar_id":190226862848,"original_size":100,"full_name":"full_name","content_type":"content_type"}
Мой запрос:

Код:
Запрос:
POST /upload/api-avatar HTTP/1.1
Host: upload5.ask.fm
Keep-Alive: 300
Connection: keep-alive
User-Agent: Dalvik/2.1.0 (Linux; U; Android 6.0.1; Nexus 6P Build/MMB29M)
Content-Type: multipart/form-data; boundary=6AE887B854F3EC
Content-Length: 288735
Accept-Encoding: gzip

--6AE887B854F3EC
Content-Disposition: form-data; name="rid"

1506766894167
--6AE887B854F3EC
Content-Disposition: form-data; name="specs"

U2FsdGVkX18y2wq1DZJ80iDt5WWtV22VpnwhRZw2ghIyrr6JcUa9UNKRXt888H79X/dC6e6zfWzXHKEsAYDQgDEzwLdxxJe1DlSlVWUhC6o3fK2JtdveEVnAgCVqJc0Ab+HdnmKtldyDFYO2ezRDxj0ohJdIo1PWUwFbp4zKQXjSPjZyUGB2uAwduc/J/0OxhUeWy49BlhmMvEn69v5wYoxDoqI4RDTliewM83yyMJk=
--6AE887B854F3EC
Content-Disposition: form-data; name="file"; filename="D:\files\pictures\dolina-sent-dzhons-ozernyy.jpg"
Content-Type: image/jpeg

Данные изображения...
--6AE887B854F3EC--

Ответ:
HTTP/1.1 400 Bad Request
Date: Sat, 30 Sep 2017 10:21:34 GMT
Content-Type: application/json
Content-Length: 45
Server: Ask.FM Web Service

{"status":"error","reason":"invalid_request"}
User-Agent не влияет, параметры specs и rid правильные, данные изображений идентичны, грешу на Content-Length. Использую clHTTPSendEx (synapse), Delphi 10 Seattle.

Кусок кода:
Код:
try
      rid := fJson.O['upload'].V['requestId'];
      specs := fJson.O['upload'].S['specs'];
      serviceUrl := fJson.O['upload'].S['serviceUrl'];
    except
      if fError = '' then
        fError := 'invalid_response_params_avatar_init';
      Exit;
    end;

    if (rid = '') or (specs = '') or (serviceUrl = '') then
    begin
      if fError = '' then
        fError := 'invalid_response_params_avatar_init';
      Exit;
    end;

    m := TMultipartFormDataStream.Create;
    try
      m.AddFieldString('rid', rid);
      m.AddFieldString('specs', specs);
      m.AddFile('file', aTempPath);

      h.ClearAll;
      h.Headers.Add('Accept-Encoding: gzip');
      h.POST(Trim(serviceUrl), m, fResp);
    finally
      m.Free;
    end;

    if Pos('"avatar_id":"', fResp) = 0 then
    begin
      fError := Pars('"reason":"', fResp, '"');
      if fError = '' then
        fError := 'invalid_request';
      Exit;
    end;
PaHaNjkee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправлять multipart/form-data Post? Smagulov85 Работа с сетью в Delphi 5 20.12.2012 21:04
post multipart/form-data Cpluser Общие вопросы .NET 1 06.02.2012 09:30
С# отправка multipart/form-data запроса xata1988 ASP.NET 0 12.10.2011 22:47
C# multipart/form-data Pedro Работа с сетью в Delphi 1 18.10.2010 19:42
Пост запрос в кодировке 'multipart/form-data' bmp152 Работа с сетью в Delphi 1 21.01.2010 02:58