2011-07-29 9 views
0

サーバにPOSTを行っていたMacOSアプリケーションがありました。私はPOSTのURLを変更し、何かが動作を停止しました。ASIFormDataRequestに空のPOSTボディがあります

私はTuffcode(スニッファ)をダウンロードしました。新しいURLを使用すると、POST BODYは空です。

- (IBAction)grabURLInBackground:(id)sender 
{ 
    NSURL *url = [NSURL URLWithString:@"url1"]; 
    //NSURL *url = [NSURL URLWithString:@"url2"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setDelegate:self]; 
    [request addRequestHeader:@"Content-Language" value:@"en"]; 
    [request addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"]; 
    [request addRequestHeader:@"Connection" value:@"keep-alive"]; 
    [request addRequestHeader:@"Cookie" value: [NSString stringWithFormat:@"botcust2=%@", sn]]; 
    [request setShouldAttemptPersistentConnection:NO]; 

    [request addPostValue:[input stringValue] forKey:@"input"]; 
    [input setStringValue:@""]; 
    [request startAsynchronous]; 

} 

url1からurl2に切り替えると、整形されたPOST BODYから空のPOST BODYに切り替わります。それはどうすればできますか?どのようにして送信されるものがURLによって決定されますか? 最初は、POSTを正しく解釈しなかったのは新しいサーバーだと思っていましたが、Tuffcodeが正しいとすれば、アプリケーションはデータを送信していませんか?

また、HTTPの仕組みについてわからないことがありますか?私は混乱しています...

いくつかのログ:

2011-07-29 12:28:36.018 ChatBot[6764:707] [STATUS] Starting asynchronous request <ASIFormDataRequest: 0x10188d420> 
2011-07-29 12:28:36.021 ChatBot[6764:6403] 
==== Building an application/x-www-form-urlencoded body ==== 
input=hello 
==== End of application/x-www-form-urlencoded body ==== 
2011-07-29 12:28:36.027 ChatBot[6764:6403] [CONNECTION] Request <ASIFormDataRequest: 0x10188d420> will not use a persistent connection 
2011-07-29 12:28:36.280 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> finished uploading data 
2011-07-29 12:28:36.374 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> received response headers 
2011-07-29 12:28:36.375 ChatBot[6764:6403] [STATUS] Request <ASIFormDataRequest: 0x10188d420> finished downloading data (0 bytes) 
2011-07-29 12:28:36.376 ChatBot[6764:6403] [STATUS] Request finished: <ASIFormDataRequest: 0x10188d420> 
+0

はまた、ブラウザ内で実行されているHTMLフォームとのことなURLの仕事の両方の点に注意してください。 fine –

答えて

0

は、なぜあなたは、あなたが投稿した後に右をnullに文字列を設定していますか?

[request addPostValue:[input stringValue] forKey:@"input"]; 
[input setStringValue:@""]; 

コンパイラがこれらの2行の順序を切り替えて、そのヌル文字列を送信している可能性があります。なぜ、2行目を削除して実行しようとしないのですか?

+0

これは、UIの入力をクリアします。私はその行を削除しようとしましたが、実際には役に立ちませんでした。私は時々それは "ピアでリセット"と言うことに気付き、入力がスニッファ(応答なし)に現れることがあります。しかし、古いURLでは常に両方向で動作します –

0

少し後で、実際には、私はちょうど同様のものに遭遇しました。あなたと同じように、アプリケーションの以前のインスタンスで動作するASIHTTPRequestセットアップがありましたが、新しいバージョンではPOSTは空でした(データは送信されませんでした)。私はそれができないことを知っていたので、相手側のサーバーがうまく動作していた(同じコード、新しいホスティング/ URL)ことを知っていた。

私は以前のURLがsubmission.phpだと思いましたが、今度は自分のフォルダ(ちょうど/ submission /)だったので、私の新しいURLの最後にindex.phpを追加しました作られたものが再び働く。だから私はそれがちょうどURLの最後にファイルを持っていないのが好きではなかったと思います。

TL; DR - ファイル名(例:index.phpのまたは類似)で必ずご提出URLの末尾を作る

NBSP

関連する問題