在swift 2.0中通过.php发送POST消息

时间:2016-01-31 10:34:16

标签: php swift http post

我的内部有一个.php文件:

<?php print_r($_POST); ?>
<?php

//create short variable names
$message_txt=strip_tags($_POST['message_txt']."\n\n".json_encode($_POST), "<p>");

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: thing<emailaddress@email.com>' . "\r\n";
$headers .= 'From: Website <email@website.com>';

mail($toaddress, "THING Website", $message_txt, $headers);

我想从textView中获取文本并通过此php发送。有关如何实现这一目标的任何想法? 感谢

1 个答案:

答案 0 :(得分:1)

首先,您需要在swift中使用此代码,以便将变量解析为php文件。我会告诉你代码,然后一步一步地向你解释。

这里是Swift的代码:

func HttpRequest() {
    let myUrl = NSURL(string: "http://yourUrl.de/yourPhpScript.php");
    let request = NSMutableURLRequest(URL: myUrl!);
    request.HTTPMethod = "POST";

    let postString = "Message=\(textView.text)";

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil {
            print("error=\(error)")
            return
        }


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



        if let parseJSON = json {
            var resultValue = parseJSON["status"] as? String
            print("result: \(resultValue)")

            if(resultValue=="Success")
            {
                // If result from php is success, do something...
            }


            else
            {
                // if result from php failed, do something...
            }


            dispatch_async(dispatch_get_main_queue(), {


                //Display alert with confirmation.
                let myAlert = UIAlertController(title: "Alert", message: "Your message", preferredStyle: UIAlertControllerStyle.Alert);

                let OkAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default){ action in


                }

                myAlert.addAction(OkAction)
                self.presentViewController(myAlert, animated: true, completion: nil);

            });

        }

        } catch {
            // report error
        }

    }
    task.resume()

}

让我们从解释开始:

  1. 在第一行中,您有一个字符串引用您的.php文件,该文件可能位于服务器上
  2. request.HTTPMethod设置为POST,因为您想将某些内容发布到php文件中
  3. 现在是postString:在我的例子中有一个名为&#34; Message&#34;的变量。在php文件中,使用&#34; =&#34;你只需给它一个值为&#34; textView.text&#34;在我的情况下,您可以通过放置和&#34;&amp;&#34;来附加其他变量。直接在它之后
  4. 然后有一些代码,请求是ASYNC当然是因为你不想阻止你的主线程,这是非常重要的
  5. if let parseJSON中将是来自php脚本的重新解析值的值,如果ASYNC返回值,则可以使用该值,不要在它赢得之前放置它
  6. 在你的php文件中你可以简单地解析一个名为&#34; status&#34;的变量。显示成功或失败,你可以迅速处理,然后
  7. 现在是php文件:

    <?php 
    
    // If you want to connect to a server you have to do that
    $servername = "";
    $username = "";
    $passwordServer = "";
    $dbname = "";
    
    
    // Create connection
    $conn = mysqli_connect($servername, $username, $passwordServer, $dbname);
    
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    
    if (isset ($_POST["Message"]){
        $YourMessageFromSwift = $_POST["Message"];
    }
    
    // do what you want using php
    
    $returnValue["status"] = "Success";
    echo json_encode($returnValue);
    
    mysqli_close($verbindung);
    ?>
    

    <强>解释

    1. 首先创建与服务器的连接(这是可选的)
    2. 然后使用isset评估变量是否正确传递
    3. 请记住,$_POST["Message"]与swift文件中的相同
    4. 在最后一步中,您可以使用json_encode
    5. 解析状态

      希望这有助于所有人:)