当看到这个错误时,一般是编码解析不了,所以返回400
正确的是把所有json数据ansitoutf8 后 放入list 或 stringstream
idhttp := TIdHTTP.Create(nil);
try
ssql := 'select * from cxt_dishes_ingredient ' ;
db.GetDataSet(ado,ssql);
if not ado.IsEmpty then
begin
sfLogger.logMessage('配料信息上传:' + IntToStr(ado.recordcount));
sTime := Gettamptime(13);
jo := SO();
st := TStringStream.Create(AnsiToUtf8(jo.AsString));
try
idhttp.Request.ContentType := 'application/json';
IdHTTP.Request.Accept := '*/*';
idhttp.Request.ContentLength := st.Size;
sResp := idhttp.Post(url,st);
except
on e:Exception do
begin
sfLogger.logMessage('配料信息上传错误:'+ e.Message);
end;
end;
if Pos('"status":1',sResp) > 0 then
begin
sfLogger.logMessage('配料信息上传Ok:');
end
else
begin
sfLogger.logMessage('配料信息上传错误:'+ Utf8ToAnsi(sResp));
sfLogger.logMessage(st.DataString);
end;
st.Free;
end;