Снифаю запросы в программе, делаю запрос абсолютно тем же образом, получаю в ответ ошибку от сервера "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;