2

Objective-c の NSURLConnection によって POST メソッドでユーザー名とパスワードを送信してサーバーにログインしようとしていますが、これは NSLog から取得します

NSログ:


NSLog:
    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@",string);

コンソールに書き込む内容:



    
    
    404 Not Found
    
    

Not Found

Sorry!The page requested was not found.

なぜこれが起こるのですか?インデックス ページではなく Not Found ページが表示されるのはなぜですか? 私は何を間違っていますか?ちなみに、httpではなくhttpsに接続しようとしていますが、ソースコードは次のとおりです。



    @interface ProjectViewController ()
    @property NSURLConnection * urlConnection;
    @property NSMutableData * responseData;

    @end

    @implementation ProjectViewController



    @synthesize responseData =_responseData;

    - (IBAction)LoginButton:(UIButton *)sender {

        NSMutableURLRequest *request = nil;
        request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://loginpage.com"]];

        NSString *post = [NSString stringWithFormat:@"sid=%@&PIN=%@", @"username", @"password"];
        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
        [request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
        [request setTimeoutInterval: 15];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:postData];

        _urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
        [_urlConnection start];



        //[self performSegueWithIdentifier:@"LoginComplete" sender:self];
    }




    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        [self.responseData appendData:data];
        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",string);
    }

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        //Oops! handle failure here
    }
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    }

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
            //NSDictionary *headerFields = [(NSHTTPURLResponse*)response allHeaderFields]; //This would give you all the header fields;
            //NSLog(@"%@",headerFields);
        }
    }
    @end

私が認識したのは、POST リクエストの一部をコメントに入れると、ページのソースがコンソールに出力されますが、もちろん、ユーザー名とパスワードをサーバーに送信できないことです。ログインページのソースコードを取得しただけですが、ログイン後にソースコードを取得したいです。実はこのセッションを使って別のページにリダイレクトしたいのです。

この部分:



    NSString *post = [NSString stringWithFormat:@"sid=%@&PIN=%@", @"username", @"password"];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    [request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
    [request setTimeoutInterval: 15];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:postData];

4

1 に答える 1

0

Webサイトで使用されている証明書は自己署名されていますか?Webビューでリクエストを実行して、そこで機能するかどうかを確認しようとしましたか?nsurlrequestにありませんか?

この応答を試してみてください。おそらくそれはあなたにいくつかのヒントを与えるでしょう。

于 2012-12-03T09:51:50.233 に答える