0

ユーザー名とパスワードを Web サイトに送信しようとしていますが、これは通常フォームから送信されます。ただし、サーバーはログインページにリダイレクトしています。これは通常、ユーザー名とパスワードが間違っている場合に発生します。ユーザー名は電子メール アドレスの形式で、パスワードは文字列です。

値が正しく処理されていることを確認するために開発者が不在であるため、現在、Web サイトにアクセスできます。以下で作成したコードに明らかなエラーが見られる人はいますか?

プライバシー上の理由から、サンプル コードから URL を削除したことに注意してください。

// Validate login
-(bool)validateLogin{

    // Initialize URL to be fetched
    NSURL *url = [NSURL URLWithString:@"removedurl"];

    NSString *post = @"username=example1%40example.com&password=example2";

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    // Initalize a request from a URL
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[url standardizedURL]];

    //set url
    [request setURL:url];
    //set http method
    [request setHTTPMethod:@"POST"];
    //set request length
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    //set request content type we MUST set this value.
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    //set post data of request
    [request setHTTPBody:postData];

    NSLog(@"%@", [request allHTTPHeaderFields]);

    //initialize a connection from request
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    _connection = connection;    
    //start the connection
    [connection start];

    return YES;
}
4

1 に答える 1

3

この文字列は正しくありませんNSString *post = @"username=example1%40example.com&example2"; アンパサンドの後にキー=値を指定する必要があります。
@"key1=value1&key2=value2";

作業コードの例:

.h ファイル セット デリゲート:

@interface Controller <NSURLConnectionDataDelegate>

.m ファイル内:

- (void)login {
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:kRequestTimeOut];
    request.HTTPMethod = @"POST";
    NSString *params = @"key1=value1&key2=value2";
    request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding];

    _data = [NSMutableData data];

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [_data appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    //Parse your '_data' here.
}
于 2013-06-03T13:32:09.510 に答える