You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
5.2 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

unit DwTh;
interface
uses
Classes, u_op_seae_DsWebService, Sysutils, ActiveX,IdHTTP;
type
DwThread = class(TThread)
idhttp1: TIdHTTP;
private
MBLNO,EVENT,STATE,response:WideString;
_result:string;
Param:TStringList;
protected
procedure Execute; override;
procedure Giveanswer;
procedure ThFail;
procedure SetState(response: string);
function DoPost(_URL:string;_Referer:string;_order:TStringList):WideString;
public
// constructor Create(_s: string;AWS:YzxfDelegatorPortType); virtual;
constructor Create(_MBLNO: string); virtual;
end;
implementation
uses U_op_seae,my_sys_function;
var Rev: string;
// aa:YzxfDelegatorPortType;
URL: string;
constructor DwThread.Create(_MBLNO: string);
begin
inherited Create(True);
FreeOnTerminate := true;
MBLNO:= _MBLNO;
EVENT:='';
STATE:='';
Param:=TStringList.Create;
_result:='';
IdHTTP1:=TIdHttp.Create;
end;
procedure DwThread.SetState(response: string);
var
_eventstart,_eventend,_statestart,_stateend:integer;
_temp:string;
begin
_eventstart:=pos('name="__VIEWSTATE" id="',response);
_temp:=copy(response,_eventstart+43,3000);
_eventend:=pos('" />',_temp);
_temp:=copy(_temp,0,_eventend-1);
STATE:=_temp;
_statestart:=pos('id="__EVENTVALIDATION" value="',response);
_temp:=copy(response,_statestart+30,3000);
_stateend:=pos('" />',_temp);
_temp:=copy(_temp,0,_stateend-1);
EVENT:=_temp;
end;
function DwThread.DoPost(_URL:string;_Referer:string;_order:TStringList):wideString;
var
Param:TStringList;
RStream:TStringStream;
post:AnsiString;
begin
Param:=TStringList.Create;
RStream:=TStringStream.Create('');
Param:=_order;
IdHTTP1.ProtocolVersion:=pv1_1;
IdHTTP1.HTTPOptions:=IdHTTP1.HTTPOptions+[hoTreat302Like303];
IdHTTP1.Request.Accept:='text/html, application/xhtml+xml, */*';
IdHTTP1.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko';
IdHTTP1.Request.AcceptEncoding:='gzip, deflate';
IdHTTP1.Request.Host:='56.qdcdc.com';
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
idhttp1.HandleRedirects:=true;
IdHTTP1.Request.Referer:=_Referer;
try
IdHTTP1.Post(_URL,Param,RStream);
except
on e:Exception do//<2F>׳<EFBFBD><D7B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
//doing something
raise;
end;
end;
result:=UTF8Decode(RStream.DataString);
end;
procedure DwThread.Execute;
var
AA_s, _t: string;
revcount: integer;
aa: DsWebServiceSoap;
RStream:TStringStream;
_getanswer: boolean;
begin
_getanswer := false;
try
response:=DoPost('http://cdp.qdcdc.com/CDP/login.aspx','',Param) ;
SetState(response);
////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʺ<EFBFBD><CABA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½
RStream:=TStringStream.Create('');
Param.Clear;
Param.Add('__VIEWSTATE='+state );
Param.Add('__EVENTVALIDATION=' + EVENT);
Param.Add('user_name=user1');
Param.Add('password=88888888');//
Param.Add('hdSuccess=true');
response:=DoPost('http://cdp.qdcdc.com/CDP/Login.aspx','http://cdp.qdcdc.com/CDP/Login.aspx',Param);
SetState(response);
////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯҳ<D1AF><D2B3>
Param.Clear;
response:=DoPost('http://cdp.qdcdc.com/CDP/MftQuery/BillExportQuery.aspx','',Param) ;
SetState(response);
/////////////////////
Param.Clear;
Param.Add('__VIEWSTATE='+state );
Param.Add('__EVENTVALIDATION=' + EVENT);
Param.Add('txtIMO=' );
Param.Add('txtTransportName=' );
Param.Add('txtVoyageNo=' );
Param.Add('txtBillNo='+MBLNO );
Param.Add('LinkButtonQuery=%E6%9F%A5%E8%AF%A2' );
Param.Add('hdSelectRow=' );
Param.Add('hdData=' );
Param.Add('hdCols=%E5%BA%8F%E5%8F%B7%2C%E5%87%BA%E5%8F%A3%E6%8F%90%E5%8D%95%E5%8F%B7%2C%E9%A2%84%E9%85%8D%E8%88%B1%E5%8D%95%2C%E5%87%BA%E5%8F%A3%E8%BF%90%E6%8A%B5%E6%8A');
Param[Param.Count-1]:=Param[Param.Count-1]+'%A5%E5%91%8A%2C%E5%87%BA%E5%8F%A3%E8%A3%85%E8%BD%BD%2C%E5%87%BA%E5%8F%A3%E7%90%86%E8%B4%A7%2C%E5%87%BA%E5%8F%A3%E6%8A%A5%E5%85%B3%E7%8A%B6%E6%80%81%2C%E7%A9%BA%E7%AE%B1%E9%AA%8C%E6%94%BE%2C%E6%8F%90%E5%8D%95%E6%94%BE%E8%A1%8C';
Param.Add('hdChildHide=' );
Param.Add('hdColsHide=' );
Param.Add('hdColSpan=%E6%8F%90%E5%8D%95%E5%8F%B7' );
Param.Add('hdMutiQuery=' );
Param.Add('hdReturnResult=' );
Param.Add('hdLoadMarkText=' );
Param.Add('hdArrivalMarkText=' );
Param.Add('hdEmptyResult=' );
Param.Add('hdTalMarkText=' );
response:=DoPost('http://cdp.qdcdc.com/CDP/MftQuery/BillExportQuery.aspx'
,'http://cdp.qdcdc.com/CDP/MftQuery/BillExportQuery.aspx',Param);
idhttp1.Disconnect;
_result:=response;
if (_result<>'')
then begin
synchronize(Giveanswer);
_getanswer := true;
end;
finally
if not _getanswer then
begin
Sleep(1500);
synchronize(ThFail);
end;
end;
// assignlogtofile('Send to WS False');
end;
procedure DwThread.Giveanswer;
var
_s, _t: string;
_i: integer;
begin
// Ycc7_DebugDM.SendWS(Rev);
try
frm_op_seae.DealAnswer(_result);
finally
end;
end;
procedure DwThread.ThFail;
var _i: integer;
begin //û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ظ<EFBFBD>ʱ
try
//Form_Opt_File.Thread_Dec(JZQNO);
//Form_Opt_File.AfterThFail(JZQNO);
except
end;
end;
end.