I'm trying to return content from maps.google.com from within Delphi 2006 using the TIdHTTP component.
My code is as follows
procedure TForm1.GetGoogleMap();
var
t_GetRequest: String;
t_Source: TStringList;
t_Stream: TMemoryStream;
begin
t_Source := TStringList.Create;
try
t_Stream := TMemoryStream.Create;
try
t_GetRequest :=
'http://maps.google.com/maps/api/staticmap?' +
'center=Brooklyn+Bridge,New+York,NY' +
'&zoom=14' +
'&size=512x512' +
'&maptype=roadmap' +
'&markers=color:blue|label:S|40.702147,-74.015794' +
'&markers=color:green|label:G|40.711614,-74.012318' +
'&markers=color:red|color:red|label:C|40.718217,-73.998284' +
'&sensor=false';
IdHTTP1.Post(t_GetRequest, t_Source, t_Stream);
t_Stream.SaveToFile('google.html');
finally
t_Stream.Free;
end;
finally
t_Source.Free;
end;
end;
However I keep getting the response HTTP/1.0 403 Forbidden. I assume this means that I don't have permission to make this request but if I copy the url into my web browser IE 8, it works fine. Is there some header information that I need or something else?
you're doing a POST
request, however your browser will be doing a GET
request; change your delphi code to also do a GET
request.
google may be blocking by UserAgent; try clearing it, or changing it to match your browser's.
cloudstrif3, the value returned by the request is a image not a html page, i just wrote this article Using Google maps (Static Maps) without TWebBrowser on my blog, so you can check the source code.
check this sample.
var
StreamData :TMemoryStream;
JPEGImage : TJPEGImage;
Url : string;
begin
Url :='http://maps.google.com/maps/api/staticmap?' +
'center=Brooklyn+Bridge,New+York,NY' +
'&zoom=14' +
'&size=512x512' +
'&maptype=roadmap' +
'&markers=color:blue|label:S|40.702147,-74.015794' +
'&markers=color:green|label:G|40.711614,-74.012318' +
'&markers=color:red|color:red|label:C|40.718217,-73.998284' +
'&format=jpg'; //i add this param to return a jpg image , because the default format used is png.
'&sensor=false';
StreamData := TMemoryStream.Create;
JPEGImage := TJPEGImage.Create;
try
try
idhttp1.Get(Url, StreamData); //Send the request and get the image
StreamData.Seek(0,soFromBeginning);
JPEGImage.LoadFromStream(StreamData);//load the image in a Stream
ImageMap.Picture.Assign(JPEGImage);//Load the image in a Timage component
Except On E : Exception Do
MessageDlg('Exception: '+E.Message,mtError, [mbOK], 0);
End;
finally
StreamData.free;
JPEGImage.Free;
end;
end;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With