uja*_*abu 3 delphi api blogger indy delphi-7
我正在尝试使用idHTTP组件发布到Blogger,但是,我收到"HTTP/1.0 400 Bad Request"错误.
procedure TForm1.Button1Click(Sender: TObject);
var request,response,req : TStringlist;
auth,blogid : string;
begin
blogid := '00000000000000000000000';
request := TStringList.Create;
response := TStringList.Create;
req := TStringList.Create;
IdHTTP1.Request.Connection := 'Keep-Alive';
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
request.Clear();
request.Values['accountType'] := 'GOOGLE';
request.Values['Email'] := 'xxx@gmail.com';
request.Values['Passwd'] := 'yyy';
request.Values['service'] := 'blogger';
response.Text :=IdHTTP1.Post('https://www.google.com/accounts/ClientLogin',request);
auth := response.Values['Auth']; //working perfectly
req.Clear();
req.Text := Memo2.Lines.Text; //put entry into request var
IdHTTP1.Request.CustomHeaders.Clear();
IdHTTP1.Request.CustomHeaders.Add('GData-Version: 2');
//IdHTTP1.Request.CustomHeaders.Add('Authorization: GoogleLogin auth='+auth);
IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'GoogleLogin auth = '+auth;
IdHTTP1.Request.ContentType := 'application/atom+xml';
memo1.Text := IdHTTP1.Post('https://www.blogger.com/feeds/' + blogid + '/posts/default', req); // I got "HTTP/1.0 400 Bad Request" error right here.
end;
Run Code Online (Sandbox Code Playgroud)
gor错误
memo1.Text := IdHTTP1.Post('https://www.blogger.com/feeds/' + blogid + '/posts/default', req);
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?
任何帮助是极大的赞赏.谢谢!
您正在使用a发布XML数据TStringList.即使您没有设置,但发布对象将始终像Request.ContentType对待数据一样对数据进行编码.这可能是服务器抱怨的原因,因为它无法正确接收您想要的XML.要发布XML数据,您需要使用,例如:application/x-www-form-urlencodedTStringsTStream
procedure TForm1.Button1Click(Sender: TObject);
var
request, response : TStringlist;
req : TStream;
auth, blogid : String;
begin
blogid := '00000000000000000000000';
IdHTTP1.Request.Connection := 'Keep-Alive';
IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
request := TStringList.Create;
try
response := TStringList.Create;
try
request.Values['accountType'] := 'GOOGLE';
request.Values['Email'] := 'xxx@gmail.com';
request.Values['Passwd'] := 'yyy';
request.Values['service'] := 'blogger';
IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
response.Text := IdHTTP1.Post('https://www.google.com/accounts/ClientLogin', request);
auth := response.Values['Auth'];
finally
response.Free;
end;
finally
request.Free;
end;
req := TMemoryStream.Create;
try
Memo2.Lines.SaveToStream(req);
req.Position := 0;
IdHTTP1.Request.CustomHeaders.Clear;
IdHTTP1.Request.CustomHeaders.Values['GData-Version'] := '2';
IdHTTP1.Request.CustomHeaders.Values['Authorization'] := 'GoogleLogin auth = ' + auth;
IdHTTP1.Request.ContentType := 'application/atom+xml';
Memo1.Text := IdHTTP1.Post('https://www.blogger.com/feeds/' + blogid + '/posts/default', req);
finally
req.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |