お世話になってます。D5Proを使用しています。
Inetコントロールを使用して、Webサーバーへ接続するアプリを作成しているのですが、原因不明のエラーが発生していて困っています。
データ転送をExecuteで送受信しているのですが、Statusが変化していく中で、
icResponseReceived(8)になったらInetのタグによって送受信の処理を
Case文で分けていますが、送受信ともにまずはGetHeaderでヘッダーを取得
して、その内容をログに書いて・・・と進みますが、
ある環境(これが解らない…T_T)だと、GetHeaderに失敗しているのか、
ヘッダーの内容が取得できていないような感じになって、
その続きのコードが実行されないままStatusが9…10…と進んでしまって
結局なにも動作しません。
気になるのは、その時に「Unable to Complete Request」というメッセージ
ダイアログが表示されるのです。。。
ただ、エラーは出るものの、何度か同じ処理を繰り返すと正常に行く時も
あるので、コードのミスなのかサーバー側なのかの切り分けが
つかなくなっている状態なのです。
足りない情報などあれば、ご指摘ください。
よろしくお願い致します。
えと、ソースはこんな感じです。
procedure TfrmMain.Inet1StateChanged(Sender:TObject;State:smallint);
{このイベントはExecute実行後、Stateが変化する都度呼び出される}
var
wStr,wHdr: String;
begin
case state of
icNone:
{1〜7まで省略}
icResponseReceived: begin //これはstateが8のとき
case Inet1.Tag of
RECEIVE_START: //受信時の処理
begin
WriteLog('受信開始'); //ログ出力用手続き
wHdr := Inet1.GetHeader();//ここが実行されてない?失敗?
WriteLog(wHdr); //取得したヘッダをログに出力
{後続処理がある}
end;
SEND_START: //送信時の処理
begin
WriteLog('送信開始'); //ログ出力用手続き
wHdr := Inet1.GetHeader();//ここが実行されてない?失敗?
WriteLog(wHdr); //取得したヘッダをログに出力
{後続処理}
end;
end; //case終わり
icDisconnecting: // 9
icDisconnected: // 10
icError: // 11
icResponseCompleted: // 12
end;
上記のようにログを出しつつ検証してみると、case文が実行された後の「受信開始」「送信開始」は出力されているのですが、どうもGetHeaderに失敗しているのか、getheader後の処理が実行されずにステータスが進行してしまい、どこかのタイミングで「unable to complete request.」というエラーメッセージが出る感じです。
ツイート | ![]() |