Как приложение iphone может отправлять данные в php-файл сервера? - PullRequest
0 голосов
/ 13 января 2012

следующее - это начало моей целевой 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. Так что же происходит? Я проверяю это уже несколько часов!
Надеюсь, кто-нибудь может мне помочь! Спасибо!

Ответы [ 3 ]

1 голос
/ 13 января 2012

Настройте NSURLConnection методы делегирования . Это поможет вам лучше диагностировать проблему и посмотреть, находится ли она на iPhone или на стороне сервера.

Кроме того, если вы отправляете запрос POST. Так что вам не нужно читать из входного потока PHP. Используйте $_POST супер глобальный .

Вы также можете убедиться, что ваш PHP-скрипт корректен, отправив ему запрос из командной строки. Например curl на * nix.

0 голосов
/ 04 сентября 2014

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

Это будет выводить эхо только в том случае, если вы просматриваете его из браузера, который опубликовал данные для ввода, а это не то, что происходит, если ваша iOS отправляет PHP и затем вы посещаетеPHP после.

Как правило, вы вообще не можете это проверить.Вы должны разработать ответ в PHP и настроить методы делегата для обработки того, что возвращает PHP.

Например:

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

Таким образом, вы можете декодировать ответ в iOS с помощью NSJSONSerializer ипросмотр того, что вы разместили, был таким же, как и то, что было возвращено.}

0 голосов
/ 13 января 2012

Попробуйте ngrep.Это может помочь.

Начните с попытки настройки homebrew

Затем выполните

brew install ngrep

, а затем

sudo ngrep host mywebsite.com port 80

Здесь должны отображаться данные, отправленные и полученные между устройством и сервером на mywebsite.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...