0

この質問は、この他の質問に関連しています: Zend getParameters not return what is in url route

私が直面している問題は、ランダムに、Zend サーバーがルートにあるパラメーターを取得せず、アプリのログインがクラッシュすることです。getParams();つまり、関数を印刷するときに、次のようにユーザーの電子メールを取得することがあります。

Array (
    [email] = user@email.com
    (...)
)

これは正常に機能しますが、他の場合は次のようになります。

Array (
    [user@email.com] = 2.874983 //Longitude
    (...)
)

ログイン アクションのクラッシュの原因。

これは、サーバー側またはクライアント側の障害である可能性があります。サーバーが呼び出されるたびにNSLogを出力するようにしましたが、リクエストの URL が常に整形式であることがわかりました。NSMutableURLRequest偶然かもしれませんが、わかりませんが、この問題を解決しようとして、リクエスト コードを変更し、一時的に修正しました。しかし、いくつかのリクエストの後、エラーが戻ってきました。

次のスニペットは、サーバーへの接続に使用しているコードを表しています。

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[self._url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]
                                                        cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                    timeoutInterval:60.0];
NSMutableString *values = nil;
if ( params ) {
    NSDictionary *parameters = params;
    values = [[NSMutableString alloc] init];        
    for ( NSString* key in parameters ) {
        NSMutableString *value = [[NSMutableString alloc] init];
        [value appendString:key];
        [value appendString:@"="];
        [value appendString:[self urlEncodeValue:[parameters valueForKey:key]]];
        [value appendString:@"&"];
        [values appendString:value];
    }
}
NSData *postData = [values dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
NSString *postLenght = [NSString stringWithFormat:@"%d", [postData length]];
if ( cookies ) {
    NSDictionary *cooks = cookies;
    for ( NSString* cookie in cooks) {
        NSMutableString *ck = [[NSMutableString alloc] initWithString:cookie];
        [ck appendString:@"="];
        [ck appendString:[cooks valueForKey:cookie]];
        [theRequest addValue:ck forHTTPHeaderField:@"Cookie"];
    }
}
[theRequest setHTTPMethod:self._method];
if ( values ) {
    [theRequest setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [theRequest setHTTPBody: postData];
    [theRequest setValue:postLenght forHTTPHeaderField:@"Content-Length"];
}
// create the connection with the request
// and start loading the data
NSLog(@"%@", theRequest);
NSURLConnection *theConnection =[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

もう 1 つの重要な点は、ログインが緯度と経度の両方の値を送信することです。これらの値の一部が変更されると、ログインがクラッシュするようです。

4

1 に答える 1

0

私はこの問題を解決し、ここに解決策を投稿しました: Zend getParameters not return what is in url route

これはmemcached設定の問題であり、iOS クライアント アプリケーションとは関係ありません。

于 2012-10-18T07:11:43.610 に答える