0

ユーザーのメールアドレス、件名、メールの内容だけでミニメールモジュールを手動で作成しようとしています。それは、私のアプリの顧客サポートを迅速に提供するという目的を果たしているだけです。また、会社のメール アカウントではなく自分の Gmail アカウントを使用しているだけなので、メール アドレスを非表示にしたいと考えています。これは、gmail で知られているため、適切でタイムリーなサービスを保証するためです。

問題は、次を使用して「メール」コンテンツを PHP サーバーに送信するときです。

- (void)sendMail{
    NSString *rawStr = [NSString stringWithFormat:@"http://www.somedomain.com/iosuser.php?id=%@__%@__%@__%@",[self getMacAddress],emailAdd.text,subject.text,content.text;];

    NSLog(@"%@",rawStr);
    NSURL *url = [NSURL URLWithString:rawStr];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    NSURLResponse *response;
    NSError *err;
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    NSLog(@"responseData: %@", responseData);
}

NSLog は正常にrawStr動作し、URL、電子メール アドレス、件名、およびコンテンツのすべてのコンテンツを表示します。

http://www.somedomain.com/iosuser.php?id=C8:2A:14:22:92:E2__test@test.com__SubjectTest__ContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTestContentTest

しかし、戻り値の NSLog responseData: responseData: (null)したがって、実際には何も送信されません。

emailAdd と件名は UITextField 入力ですが、コンテンツは UITextView 入力からのものです。UITextView が問題なのだろうか。これがばかげた問題である場合は、ポインタを本当に感謝し、お詫び申し上げます。

注: ブラウザの NSLog 出力を使用しrawStrてスクリプトを手動でテストしようとしましたが、動作します。

4

3 に答える 3

1

UITextViewは問題ではないと思います。を介して正しいログを取得しているためですNSLog(@"%@",rawStr);。サーバーから適切な応答が得られていません。100%確信が持てません。したがって、以下のリンクを確認してください。

-[NSURLRequest sendSynchronousRequest:returningResponse:error:]HTTPヘッダーを取得しています

NSURLConnectionsendSynchronousRequestでのエラー処理

于 2012-06-15T19:17:20.787 に答える
1

あなたの問題は@URLのサインインだと思います(私が信じているユーザー名を指定しない限り許可されません)

URLに入れる前に、すべての文字列をエスケープする必要があります

NSString *rawStr = [NSString stringWithFormat:@"http://www.somedomain.com/iosuser.php?id=%@__%@__%@__%@",
                    [[self getMacAddress] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [emailAdd.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [subject.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
                    [content.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
于 2012-06-15T19:56:07.290 に答える
0

実際には、iOS が採用している非常に基本的な URL 構文に当てはまります... スペースはありません。を使用してすべてのスペースをアンダースコアに置き換えました

rawStr = [rawStr stringByReplacingOccurrencesOfString:@" " withString:@"_"];

より良い処理のために、同期から非同期に変更しました。

于 2012-06-15T20:49:41.143 に答える