Подскажите как заюзать и получить от сервера укорачивателя goo.gl на Delphi вот, подключил SSL библиотеки. Вот POST запрос через httpfox: Code: (Request-Line) POST /api/shorten HTTP/1.1 Host goo.gl User-Agent Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding gzip, deflate Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7 Connection keep-alive X-Auth-Google-Url-Shortener true Content-Type application/x-www-form-urlencoded;charset=utf-8 Referer http://goo.gl/ Content-Length 39 Cookie authed=1 Pragma no-cache Cache-Control no-cache Code: url http://mail.ru security_token ответ: Code: {"short_url":"http://goo.gl/PQda","added_to_history":false} Как на делфи это сделать с помощью IdHTTP и других компонентов?
посмотрите тему "Наши релизы" там ShadowRun выкладывал готовую программу. Не нужно Вам ее писать. Вот ссылка на пост: /showpost.php?p=2885536&postcount=101
Code: function Pars(T_, ForS, _T: string; CaseSensitive:Boolean=False): string; var a, b: integer; begin Result := ''; if (ForS = '') then Exit; if T_='' then a:=1 else if CaseSensitive then a := Pos(T_, ForS) else a := Pos(UpperCase(T_), UpperCase(ForS)); if a = 0 then Exit else a := a + Length(T_); ForS := Copy(ForS, a, Length(ForS) - a + 1); if _T='' then b:=Length(forS)+1 else if CaseSensitive then b := Pos(_T, ForS) else b := Pos(UpperCase(_T), UpperCase(ForS)); if b > 0 then Result := Copy(ForS, 1, b - 1); end; function ShortenUrl(HTTP:TIdHTTP;Url:string):string; var i:Integer; Data:TStringList; res:string; begin i:=0; Result:=''; Data:=TStringList.Create; try Data.Add('url='+Url); Data.Add('security_token'); repeat try res:=HTTP.Post('http://goo.gl/api/shorten',Data); Result:=Pars('"short_url":"',res,'"'); except end; Inc(i); if frmMain.NeedStop then Exit; until (Result<>'')or(i>=3); finally Data.Free; end; end; procedure TfrmMain.btnStartClick(Sender: TObject); var HTTP:TIdHTTP; LongUrls:TStringList; ShortUrl:string; i:Integer; begin mmoShort.Clear; NeedStop:=False; LongUrls:=TStringList.Create; HTTP:=TIdHTTP.Create; try HTTP.ReadTimeout:=10000; HTTP.ConnectTimeout:=40000; LongUrls.AddStrings(mmoLong.Lines); if LongUrls.Count=0 then begin ShowMessage('Добавьте ссылок'); Exit; end; gProgress.Progress:=0; gProgress.MaxValue:=LongUrls.Count; for i:=0 to LongUrls.Count-1 do begin ShortUrl:=ShortenUrl(HTTP,LongUrls[i]); if ShortUrl<>'' then mmoShort.Lines.Add(ShortUrl); if NeedStop then Exit; gProgress.AddProgress(1); Application.ProcessMessages; end; finally LongUrls.Free; HTTP.Free; end; end; , где mmoLong - Memo с списком длинных ссылок. gProgress - TGauge NeedStop - глобальная переменна типа Boolean, если нужно прервать цикл, сделайте Code: NeedStop:=True;