2012-01-13 42 views
-1

以下是我的服務器中的目標php文件的開始部分。
我的iphone應用程序如何將數據發送到服務器的php文件?

$xmlFile = file_get_contents("php://input"); 
echo $xmlFile."<br>"; 

不幸的是,在瀏覽器中沒有在該頁面上打印任何內容。

以下是我的iphone端編程

NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/target.php"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content- Type"]; 

NSMutableData *xmlData = [NSMutableData data]; 
[xmlData appendData: [[NSString stringWithFormat: @"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"] dataUsingEncoding: NSUTF8StringEncoding]]; 
[xmlData appendData: [[NSString stringWithFormat: @"<Packet xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance iphone_schema.xsd\" xmlns=\"http://www.mywebsite.com/iphone.xsd\">"] dataUsingEncoding: NSUTF8StringEncoding]]; 
[xmlData appendData: [[NSString stringWithFormat: @"<info1>%@<info1>",self.uuid] dataUsingEncoding: NSUTF8StringEncoding]]; 

//....append xml data strings in the same way 
[request setHTTPBody:xmlData]; 
NSURLConnection *connect = [NSURLConnection connectionWithRequest:request delegate:self]; 
if(connect != nil){ 
    NSLog(@"valid request"); 
} 

的一部分,連接對象不是零。但我不確定應用程序是否已將請求POST消息發送到php頁面。

而且我在該php文件中編寫了一些代碼來測試連接。它似乎沒有收到從iPhone。那麼發生了什麼?我測試了幾個小時!
希望有人能幫助我!謝謝!

回答

1

設置您的NSURLConnection delegate methods。這將幫助您更好地診斷問題並查看它是否在iPhone或服務器端。

此外,如果您發送POST請求。所以你不需要從PHP的輸入流中讀取數據。使用$_POST super global

您還可以通過從命令行發送請求來確保您的PHP腳本是正確的。例如curl在* nix上。

0

嘗試ngrep。它可能有幫助。

開始試圖通過建立homebrew

然後做一個

brew install ngrep 

然後

sudo ngrep host mywebsite.com port 80 

這應該顯示對發送和設備,並在mywebsite服務器之間接收到的數據.COM。

0

$ xmlFile = file_get_contents(「php:// input」); echo $ xmlFile。「
」;

這隻會迴應一些東西,如果您從發佈到輸入的瀏覽器查看它,而不是如果您的iOS發佈到PHP然後您訪問PHP之後發生的情況。

一般而言,您無法通過這種方式進行驗證。您必須在PHP中設計響應,並設置您的委託方法來處理PHP返回的任何內容。

如:

$xmlFile = file_get_contents("php://input"); 
if ($xmlFile) { 
echo "{\"file\":\"$xmlFile\"}"; 
} 

這樣你可以解碼與NSJSONSerializer在iOS上的響應,並查看你發佈什麼一樣返回什麼。 }

相關問題