簡體   English   中英

如何從我的PHP腳本接收HTTP響應?

[英]How can I receive an HTTP response from my PHP script?

我已經成功向服務器發送了POST請求,但是我想知道如何在不使用JSON對象或數據庫的情況下從PHP發送響應。 我以為我總是可以將特定條目的數據庫行值發送到我的應用程序,然后將它們進行比較以查看這些值是否匹配,但這似乎有些冗長和不受歡迎。 如果日志是正確的,我寧願從我的PHP腳本發送HTTP POST響應,該日志將包含一個布爾變量,具體取決於加密密碼是否匹配。 我到處都是,但是我只能找到有關從應用程序發送HTTP POST請求的信息,而不能從服務器上的PHP腳本接收這些信息。

編輯:這是一個IBAction ,我正在使用它來打開連接以使用POST發送數據。

NSString *registrationPOSTMessage = [NSString stringWithFormat:@"username=%@&password=%@&emailAddress=%@",self.registrationFieldUsername.text,self.registrationFieldPassword.text,self.registrationFieldEmail.text];
NSData *ASCIIEncodedRegistrationPOSTData = [registrationPOSTMessage dataUsingEncoding:NSASCIIStringEncoding];
NSString *ASCIIEncodedRegistrationPOSTDataLength = [NSString stringWithFormat:@"%ul",(unsigned)[ASCIIEncodedRegistrationPOSTData length]];
NSMutableURLRequest *registrationRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.hausofalexander.tk/someiOSApplication/Register.php"]];
[registrationRequest setHTTPMethod:@"POST"];
[registrationRequest setHTTPBody:ASCIIEncodedRegistrationPOSTData];
[registrationRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[registrationRequest setValue:ASCIIEncodedRegistrationPOSTDataLength forHTTPHeaderField:@"Content-Length"];
NSURLConnection *registrationConnection = [[NSURLConnection alloc] initWithRequest:registrationRequest delegate:self];
if (registrationConnection) {
    NSLog(@"The registration information has been sent! :D");
} else if (!registrationConnection) {
    NSLog(@"For some reason the registration information couldn't be sent. :(");
} else {
    NSLog(@"Something horrible has happened :|");
}

如果要使用委托方式(當前正在使用),請確保您的類實現委托

@interface MyViewController : UIViewController <NSURLConnectionDataDelegate>

您可以使用以下委托方法獲取數據

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response
{
    NSLog(@"Did Receive Response %@", response);
}
- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data
{
    NSLog(@"Did Receive Data %@", data);
}

另一個例子是使用sendAsynchronousRequest方法,只需替換您的registrationConnection

[NSURLConnection sendAsynchronousRequest:registrationRequest queue:[[NSOperationQueue alloc] init]
                 completionHandler:^(NSURLResponse* response, NSData* data, NSError* connectionError) {
                            NSLog(@"Response %@", response);
                            NSLog(@"Data %@", data); //Add a breakpoint here to find out whats the  
                           }];

我想出了一種從PHP腳本中的關聯數組返回值方法。 我基本上是在問是否有更好的方法來接收此數據(例如,通過從我的PHP腳本向應用程序發送HTTP POST請求,然后將該POST請求的值存儲為應用程序中的變量)。 這就是我將信息從PHP請求返回到應用程序所要做的。 它使用了我想避免的JSON,但是我猜想這是唯一的(或者至少是最適合初學者的方式)

在我的iOS應用程序中,我向情節IBAction板上添加了一個按鈕,該按鈕將觸發IBAction ,該IBAction將向我的服務器上的PHP文檔發送POST請求。 這行代碼接近該PHP文檔的結尾: echo json_encode(array('registrationSuccessful'=>'true')) ,它將創建一個關聯數組,然后將其轉換為JSON語法,並將其返回給發出請求的HTTP客戶端(我的iOS應用程序) )。 這意味着我可以使用NSJSONSerialization返回的JSON數據轉換成NSArray並使用該值NSArray在應用程序中的應用程序中做(或不做),其他的事情。

我覺得這沒有什么意義,所以請問一個問題,是否需要更深入的解釋。 我很樂意為其他客人提供一個服務,也為我自己提供服務,因為我很可能會忘記幾個月后的操作方式。 :(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM