delphi Tidhttp 发送json格式报文

type
  TwmsThreadpostJson = class(TThread)
  private
    Furl: string;
    Fpostcmd: string;
    FResult: string;
    FBOOL: Boolean;
  protected
    procedure Execute; override;
  end;

class function TWmsApplicationfunction.postjson(url, postcmd: string): string;
var
  FThread: TwmsThreadpostJson;
begin
  if booleanshowflash then
    cxSetSplashVisibility(Application.MainForm <> nil, ‘‘);
  try
    FThread := TwmsThreadpostJson.Create;
    FThread.Furl := url;
    FThread.Fpostcmd := postcmd;
    FThread.FBOOL := False;
    FThread.Resume;

    while true do
    begin
      Application.ProcessMessages;
      if FThread.FBOOL then        //等待子线程执行完毕
      begin
        cxSetSplashVisibility(False, ‘‘);
        Result := FThread.FResult;
        FThread.Free;
        Break;
      end;
    end;
  except

  end

procedure TwmsThreadpostJson.Execute;
var
  strStream: TStringStream;
  strStream1: TStringStream;
  IdHTTP: Tidhttp;
  AJson: TQJson;
  passuess: boolean;
  strData: string;
  Strtemp: string;
  strRadom: string;
  strDes: string;
  pub, pri: TFGInt;
begin
  Fresult := ‘‘;
  IdHTTP := Tidhttp.create(nil);
  try
    IdHTTP.Request.CustomHeaders.clear;
    IdHTTP.Request.RawHeaders.values[‘Cookie‘] := yundawms.returncookek;
    IdHTTP.HandleRedirects := true;
    IdHTTP.Request.CustomHeaders.Add(‘Cookie: ‘ + yundawms.returncookek);
    IdHTTP.Request.Connection := ‘Keep-Alive‘;
    IdHTTP.Request.UserAgent := ‘Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)‘;
    // IdHTTP.Request.ContentType:=‘application/x-www-form-urlencoded;charset=UTF-8‘;
    IdHTTP.Request.Accept := ‘image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*‘;
    IdHTTP.Request.AcceptLanguage := ‘zh-cn‘;
    IdHTTP.Request.AcceptEncoding := ‘gzip, deflate‘;
    IdHTTP.Request.CacheControl := ‘no-cache‘;
    IdHTTP.ReadTimeout := 1200000;
    IdHTTP.ConnectTimeout := 1200000;
    IdHTTP.Request.ContentType := ‘application/json;charset=UTF-8‘;
    IdHTTP.Request.AcceptCharSet := ‘UTF-8‘;
    IdHTTP.Request.AcceptEncoding := ‘UTF-8‘;
    IdHTTP.Request.AcceptLanguage := ‘UTF-8‘;
    IdHTTP.Request.CharSet := ‘UTF-8‘;
    // IdHTTP1.CookieManager  := IdCookieManager1;
    IdHTTP.HTTPOptions := IdHTTP.HTTPOptions + [hoKeepOrigProtocol]; // 关键这行
    IdHTTP.ProtocolVersion := pv1_1;
    AJson := TQJson.Create;
    passuess := false;
    try
      AJson.Parse(Fpostcmd);
      if Assigned(AJson.ItemByPath(‘username‘)) then
        AJson.ItemByPath(‘username‘).value := Tyundawms.getwmsuser;
      Strtemp := inttostr(ConvertDelphiDateTimeToJavaDateTime(now));
      try
        AJson.AddVariant(‘dateTime‘, Strtemp);
      except

      end;

      strData := Tyundawms.getwmsuser + Tyundawms.getwmspassword + Strtemp;
      AJson.AddVariant(‘validation‘, TWmsApplicationfunction.Getmd5(strData));
      passuess := true;
      Fpostcmd := AJson.AsString;
      if passuess = true then
        strStream := TStringStream.create(Fpostcmd, TEncoding.UTF8)
      else
        exit;
    finally
      AJson.Free;
    end;
    try
      yundawms.AppService.GeneralUtility.retmain(‘log:post‘ + ‘ url:‘ + Furl + ‘ date:‘ + Fpostcmd);
    except
//      raise Exception.Create(‘postjson:记录日志异常!‘);
    end;

    strStream1 := TStringStream.create(‘‘, TEncoding.UTF8);
    try
      IdHTTP.Post(Furl, strStream, strStream1);
      Fresult := strStream1.DataString;

      Fresult := StringReplace(Fresult, ‘\u008F‘, ‘‘, [rfReplaceAll]);  //含有的特殊字符 替换为空
      Fresult := StringReplace(Fresult, ‘\u00A0‘, ‘ ‘, [rfReplaceAll]); //含有全角字符替换   全角字符会乱码
    except
      raise Exception.Create(‘postjson:服务器链接失败,请检查【网络】是否正常!‘);
      Fresult := ‘‘;
    end;

    try
      yundawms.AppService.GeneralUtility.retmain(‘log:get‘ + ‘ url:‘ + Furl + ‘ resultdate:‘ + Fresult);
    except
    end;
  finally
    IdHTTP.Disconnect;
    if Assigned(IdHTTP) then
      freeandnil(IdHTTP);
    if Assigned(strStream) then
      freeandnil(strStream);
    if Assigned(strStream1) then
      freeandnil(strStream1);
    FBOOL := True;
  end;
end;

转:https://www.cnblogs.com/yangxuming/p/8086779.html

原文地址:https://www.cnblogs.com/railgunman/p/11059720.html

时间: 2024-10-10 17:33:44

delphi Tidhttp 发送json格式报文的相关文章

Loadrunner接口测试-发送JSON格式的请求

昨天接到了一个测试接口的任务,接口的请求参数和返回结果均是JSON字符串,先是使用了函数web_submit_date,执行时报错,查询资料没找到原因,不知道是不是不支持JSON串,有兴趣的可以自己试下.然后尝试用web_custom_request函数,执行后返回的结果都正确,ok,就它了. web_custom_request("refund",                           //VuGen中树形视图中显示的名称         "Url=http:

如何使用python内置的request发送JSON格式的数据

使用步骤如下: 一.如果想发送json格式的数据,需要使用request模块中的Request类来创建对象,作为urlopen函数的参数 二.header中添加content-type为application/json 三.使用json中dumps方法将请求体内容解析为字符串类型 from urllib import request import json # 请求体数据 request_data ={ "account": "xxxxxx", "sign

HTTP POST 发送JSON格式数据(解决Expect:100-continue 问题)

最近在开发的一个项目,需要涉及到使用Http请求发送比较大的数据,研究了挺长时间,遇到问题,解决问题,在此分享给大家 1.由于数据量较大,所以采用POST方式 传输数据(POST理论上不限制数据大小,但不同服务器都会有相应的默认设置限制数据大小) 2.由于项目需要,使用JSON格式的数据 代码示例: JAVA 版,使用Apache的commons-httpClient包 发送http请求,代码仅供参考,发送请求方式可根据自己需要进行修改 import org.apache.commons.htt

ajax发送json格式数据

前后端在做数据交互的时候 一定一定要表明你所发的的数据到底是什么格式 前段后交互 你不能骗人家,不然后端开发人员来找你的时候会抄着一根凳子腿. 你的数据时什么格式 你就应该准确无误告诉别人是什么格式 那么怎么告诉后端你要发送的数据的格式是什么呢 form 表单是通过 他的 enctype 而 ajax 是通过 contentType,如果你要传送的数据是json(通常只有json格式) 你需要这么写 contentType:'application/json' 要怎样发送一个json格式的数据呢

java请求POST发送json格式请求

public static String upload(String url){ try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); MultipartEntity reqEntity = new MultipartEntity(); ArrayList<HashMap<String,String>> enclosureList = new Arr

【PostMan】1、Postman 发送json格式请求

Postman 是一个用来测试Web API的Chrome 外挂软件,可由google store 免费取得并安装于Chrome里,对于有在开发Web API的开发者相当有用,省掉不少写测试页面呼叫的工作,通常我们看到的使用情境多数是直接呼叫Web API而未随着Request发送相关所需参数,本篇就来说明如果我们想要在呼叫Web API时一并夹带JSON数据时,该如何使用Postman? 情境假设 : 采用POST的请求方式,并且须夹带JSON数据给Web API 使用方式 : (1) 输入W

curl发送json格式数据

php的curl方法详细的见官方手册. curl_setopt用法:  http://www.php.net/manual/en/function.curl-setopt.php <?php $params = array( 'par1' => 'a', 'par2' => 11, ); $header = array("Content-type: application/json");// 注意header头,格式k:v $arrParams = json_enco

postman发送json格式的post请求

在地址栏里输入请求url:http://127.0.0.1:8081/getmoney 选择"POST"方式, 在"headers"添加key:Content-Type  , value:application/json 点击"body",''raw''并设定为JSON 添加: {"userid": 1} 点击send发送即可 原文地址:https://www.cnblogs.com/crystaltu/p/8675956.h

(转)java代码发送JSON格式的httpPOST请求

import Java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; impor