从iOS发送请求到php web服务

时间:2015-12-14 14:35:45

标签: php ios mysql database swift

我有一个问题,涉及从iOS应用程序发送POST请求到用php编写的Web服务,最终将查询MySQL数据库。

tldr:如何直接在浏览器窗口中查看POST变量的内容而不刷新?

长版:

我在Xcode中编写了我的Swift代码,包括NSURLSession,请求,数据等。

我将php网页设置为var_dump($_POST);,以便我可以检查数据是否正确发送(我的数据是Xcode中的硬编码字符串,用于测试目的)。

我不能为我的生活弄清楚为什么我一直得到空的POST变量,直到我决定在绑定POST变量的网页上添加测试查询语句。瞧,查询运行成功,我的表更新了。

我现在意识到我认为POST变量为空的原因是因为我正在刷新网页以查看我的var_dump的结果。我现在也知道这是删除POST数据,因为当我用查询语句重复此操作时,我的表获得了NULL行。

我的问题是如何直接在浏览器窗口中查看POST变量的内容,而不刷新?我知道这一定是一个真正的菜鸟追逐我自己领导...但我是一个菜鸟。

谢谢

2 个答案:

答案 0 :(得分:0)

您需要修改服务本身以某种方式输出这些值。如果这是严格的调试,那么最好将服务写入日志文件。如果这是请求应用程序调用的一部分并且需要向用户显示数据,则服务应该返回应用程序可以解析的XML或JSON字符串响应。否则,您可以使用Fiddler来监控您的网络流量。

答案 1 :(得分:0)

当然加班你刷新页面就得到一个空变量。 这是我用来测试我的代码是否正常工作的原因:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    testPost() // this function will test that the code is sending the variable to your server
    return true
}

func testPost() {

    let variableToPost = "someVariable"

    let myUrl = NSURL(string: "http://www.yourserver.com/api/v1.0/post.php")
    let request = NSMutableURLRequest(URL: myUrl!)
    request.HTTPMethod = "POST"
    let postString = "variable=\(variableToPost)"
    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
    let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
        { data, response, error in

            if error != nil {

                print(error)
                return

            }

            do{

                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary


                if let parseJSON = json{


                    let result = parseJSON["status"] as? String
                    let message = parseJSON["message"] as? String


                    if result == "Success"{

                        //this should return your variable

                        print(message)


                    }else{

                        // print the message if it failed ie. Missing required field
                        print(message)

                    }

                }//if parse

            }  catch let error as NSError {
                print("error in registering: \(error)")


            } //catch

    }

    task.resume()
}

那么你的php文件只会检查是否没有空帖并将变量作为JSON返回: 的 post.php中

<?php
$postValue = htmlentities($_POST["variable"]);

 if(empty($postValue))
 {
 $returnValue["status"] = "error";
 $returnValue["message"] = "Missing required field";
 echo json_encode($returnValue);
 return;
 } else {

 $returnValue["status"] = "success";
 $returnValue["message"] = "your post value is ".$postValue."";
 echo json_encode($returnValue);
 }