zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/railgunman/p/11059720.html
Copyright © 2011-2022 走看看