uses
提交数据引用
IdGlobalProtocols, IdMultipartFormData
json引用单元
uses引用单元
System.JSON.Serializers,
REST.Json,
System.Json,
System.Types,
System.Json.Types,
System.Json.Writers,
System.Json.Builders;
//有字符串和文件 的提交post
function getyzm(usname,uspw,yzmtype,yzm_minlen,yzm_maxlen,mapfile:string; var str:string):boolean;
var
yzmStream:TIdMultiPartFormDataStream;
posrsult:tstringstream;
posjson1,posjson2:tjsonvalue;
//ok:boolean;
begin
Result:=False;
//参考json数据 套了json数据
// {“data”:{“val”:“255,172|88,158|62,192|265,104”,“id”:44140928851},“result”:true}
//{“data”:"error ",“result”:true}
try
yzmStream := TIdMultiPartFormDataStream.Create;
posrsult := TStringStream.Create;
yzmStream.AddFormField(‘user_name’, usname);
yzmStream.AddFormField(‘user_pw’, uspw);
yzmStream.AddFormField(‘yzmtype_mark’, yzmtype);
yzmStream.AddFormField(‘yzm_minlen’, yzm_minlen);
yzmStream.AddFormField(‘yzm_maxlen’, yzm_maxlen);
yzmStream.AddFormField(‘upload’, mapfile);
yzmStream.AddFile(‘upload’, mapfile, GetMIMETypeFromFile(mapfile));
form1.IdHTTP1.Post(‘http://v1-http-api.jsdama.com/api.php?mod=php&act=upload’, yzmStream, posrsult);
//ShowMessage(posrsult.DataString);
if posrsult.DataString<>’’ then
begin
posjson1 := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(posrsult.DataString), 0,true);
result := posjson1.GetValue(‘result’).ToBoolean;
//ShowMessage(‘3’);
if result then
begin
posjson2 := posjson1.GetValue(‘data’);
str := posjson2.GetValue(‘val’);
//str:=concar(str, ‘&’,posjson2.GetValue(‘id’)); //需要返回ID 可以把ID用其他分隔符分隔开
end
else
begin
str := posjson1.GetValue(‘data’);
end;
end;
finally
yzmStream.Clear;
yzmstream.Free;
end;
end;
//纯字符串的提交 post
procedure TForm1.Button2Click(Sender: TObject);
var
ss:tstringstream;
ms:tmemorystream;
ssl:tstringlist;
begin
ss:=TStringStream.Create;
form1.Memo1.Lines.Add(ss.DataString);
ssl:=TStringList.Create();
ssl.Add(‘user_name=yygyyygy123333’) ;
ssl.Add(‘user_pw=Yygy123321’);
ssl.Add(‘upload=’+ss.DataString);
ssl.Add(‘yzmtype_mark=1303’);
ssl.Add(‘yzm_minlen=4’);
ssl.Add(‘yzm_manlen=4’);
ss.Clear;
IdHTTP1.Post(’/api.php?mod=php&act=upload’,ssl,ss) ;
ShowMessage(ss.DataString);
form1.Memo1.Lines.Add(ss.DataString) ;
end;
//get 提交数据
function denglusj(name,pw:string; var itoken:string):boolean;
var
json:tjsonvalue;
steam:tstringstream;
s:string;
begin
Result:=false;
//code为0成功,401 token失效,其他均为失败,取msg错误内容
steam:=tstringstream.create(’’);
s:=‘ms/api/login?username=’+name+’&password=’+pw ;
form1.IdHTTP1.Get(s,steam);
form1.Memo1.Lines.Add(steam.DataString);
steam.clear;
steam.free;
end;