function TForm1.PostMethod(Url: String; Data: UTF8String; Max: Integer): String;
var
PostData, RespData: TStringStream;
HTTP: TIdHTTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
RespData := TStringStream.Create('');
PostData := TStringStream.Create(Data); //個人判斷這里TStringStream.create('data')不啟作用
SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
HTTP := TIdHTTP.Create;
HTTP.HandleRedirects := true;
HTTP.IOHandler := SSL;
try
try
if HTTP = nil then
Exit;
HTTP.Post(Url, PostData, RespData); //這里報錯點 Connection Closed Gracefully.
Result :=Utf8ToAnsi( RespData.DataString);
HTTP.Request.Referer := Url;
except
on e: Exception do
begin
AddLog(e.Message); //這里是寫入日志,忽略掉
Dec(Max);
if Max = 0 then
begin
Result := '';
Exit;
end;
Result := PostMethod(Url, Data, Max);
end;
end;
finally
HTTP.Disconnect;
HTTP.Free;
SSL.Free;
FreeAndNil(RespData);
FreeAndNil(PostData);
end;
end;
procedure TForm1.GetToken;
var
Url,Access_Token,StrJson,results: string;
Expires_IN:integer;
Root,Data: TJSONObject;
node: IXMLNode;
ParamsStr: string;
LDocument: IXMLDocument;
Paramslist: TStringList;
SValue:String;
begin
URL:=TokenUrl;
LDocument := TXMLDocument.Create(nil);
LDocument.LoadFromXML(GetMethod (URL,1));
node := LDocument.DocumentElement;
ReadXml(node,'token' ,ParamsStr); //成功抓取到Token--自定義程序獲取服務器回傳資訊轉成XML,并取出中的token值
Paramslist := TStringList.Create;
try
Paramslist.Text := ParamsStr; //把token值 資料傳成陣列 token值 為【Azh18=】
SValue:='&memberid=13455216875';
URL:=QueryVIPValue+Paramslist.Text; //URL結果為---http://12.227.110.23:801/api/memV/query?access-token=Azh18=
Data:= TJSONObject.Create;
try
Data.AddPair('Member','13455216875');
Memo2.Text:=PostMethod(URL, UTF8Encode(Data.ToString), 1); //斷點這里報錯{Connection Closed Gracefully},應該是postmethod 方法內出現,看上面。
finally
Data.Free;
end;
finally
Paramslist.Free;
end;
end;
服務環境如下:
服務器介面定義:
請求方式:POST
請求地址:/api/memV/query
引數說明:
名稱 型別 必須 描述
memV String true 會員卡號
回傳引數
名稱 型別 描述
code number 回傳代碼
message string 回傳資訊
amount number 余額
請求示例
{"memv":"13455216875"}
回傳示例
{“code”:0,
"message":"ok",
"amount": 50
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275251.html
標籤:網絡通信/分布式開發
上一篇:HI,資料表的問題,請高手指教。
下一篇:delphi社區版收不到序列號了
