51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> 其它 >> 文章正文

idHttp控件的Post异常

更新时间:2013-8-10:  来源:51代码网

idHttp控件的Post异常

我用最简单的调用方法:

var
  Param:TStringList; URL: String;
  RStream:TStringStream;
begin
  Param:=TStringList.Create;
  RStream:=TStringStream.Create('');
  URL := 'https://gw.open.1688.com/openapi/http/1/system.oauth2/getToken/'+edtAppKey.Text+'?';
  Param.Add('grant_type=authorization_code');
  Param.Add('need_refresh_token=true');
  Param.Add('client_id='+edtAppKey.Text);
  Param.Add('client_secret='+edtAppSecret.Text);
  Param.Add('redirect_uri=http://gw.open.1688.com/auth/authCode.htm');
  Param.Add('code='+edtCode.Text);
  IdHTTP1.Post(URL,Param,RStream);
  memInfo.Text := RStream.DataString;

执行后,在post时提示: IOHandler value is not valid。 我现在调用阿里巴巴的1688接口,阿里的客服不能解决这个问题,我用IdHTTP1.Get,在淘宝API接口调用全是正常的。

我同时备注下之前描述的,使用code获取令牌

https:-//gw.open.1688.-com/openapi/http/1/system.oauth2/getToken/YOUR_APPKEY?grant_type=authorization_code&need_refresh_token=true&client_id= YOUR_APPKEY &client_secret= YOUR_APPSECRET &redirect_uri=YOUR_REDIRECT_URI&code=CODE
注:此接口必须使用POST方法提交;必须使用https
getToken接口参数说明:
a) grant_type为授权类型,使用authorization_code即可
b) need_refresh_token为是否需要返回refresh_token,如果返回了refresh_token,原来获取的refresh_token也不会失效,除非超过半年有效期
c) client_id为app唯一标识,即appKey
d) client_secret为app密钥
e) redirect_uri为app入口地址
f) code为授权完成后返回的一次性令牌
IEHTTP1.RequestMethod := 'POST';
  IEHTTP1.ExecuteURL(URL);
  memInfo.Text := IEHTTP1.result_sl.Text;

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |