Alamofire JSON konnte nicht serialisiert werden

Ich versuche, eine PHP-Post-request mit Alamofire in meinem swift app, die SMS zu versenden mit der OVH api, aber ich habe ein Problem :

FAILURE: Error Domain=com.alamofire.error Code=-6006 "JSON could not be serialized. Input data was nil or zero length." UserInfo={NSLocalizedFailureReason=JSON could not be serialized. Input data was nil or zero length.}

Ich bin mir nicht finden, wie zu sehen, echos aus dem PHP-Skript, um es zu lösen. Ich denke nicht, dass es eine Alamofire problem, weil ich für eine andere Anforderung zum senden von E-Mails und es funktioniert gut. Hier ist meine Anfrage, wo gibt es die Fehlermeldung :

func sendSmsAutoRequest(completionHandler: (responseObject: NSDictionary?, error: NSError?) -> ()) {
    let prefs = NSUserDefaults.standardUserDefaults()
    let username = prefs.stringForKey(StorageManager.USER_NAME)!
    let messageText = prefs.stringForKey(StorageManager.MESSAGE_TEXT)!

    let parameters = ["contactsSms": contactsSms, "username": username, "messageText": messageText]
    request(.POST, "http://XXX/dontworry/sendAutoSms.php", parameters: (parameters as! [String : AnyObject])).responseJSON { response in
        print(response)
    }

}

und hier ist mein Skript :

<?php

require __DIR__ . '/vendor/autoload.php';
use \Ovh\Api;

$applicationKey = "XXX";
$applicationSecret = "XXX";
$consumer_key = "XXX";

$endpoint = "ovh-eu";

$contactsSms = $_POST['contactsSms'];
$userName = $_POST['username'];
$messageText = $_POST['messageText'];

$conn = new Api($applicationKey,
                $applicationSecret,
                $endpoint,
                $consumer_key);

$smsServices = $conn->get('/sms/');

$content = (object) array(
                            "charset"=> "UTF-8",
                            "class"=> "phoneDisplay",
                            "coding"=> "7bit",
                            "message"=> $messageText,
                            "noStopClause"=> true,
                            "priority"=> "high",
                            "receivers"=> $contactsSms,
                            "senderForResponse"=> true,
                            "validityPeriod"=> 2880
                            );

$resultPostJob = $conn->post('/sms/'. $smsServices[0] . '/jobs/', $content);

$smsJobs = $conn->get('/sms/'. $smsServices[0] . '/jobs/');

echo '{"contacts": $contactsSms,"username": $username, "messageText": $messageText, "result": $resultPostJob, "sms": $smsJobs}'; ?>

EDIT : Es scheint zu funktionieren, ich habe keine Fehler mehr ! Aber die SMS wird nicht gesendet...

  • Versuchen Sie parameters as! [String : AnyObject], encoding: .JSON).. Eventuell versuchen parameters as! [String : String], encoding: .JSON) wenn Sie können
  • Nein, die Antwort ist JSON. Aber wenn du dir den PHP-code, der web-service erwartet, ist application/x-www-form-urlencoded Anfrage. Die Anforderung JSON macht die situation noch schlimmer.
  • Karz, helmbert korrekt diagnostiziert ein problem hier. Erstellen von assoziativen array und dann json_encode es. Beachten Sie auch Ihre PHP-bezieht sich auf $userName im Eingangs-und $username im Ausgang (aber nie wirklich nutzen?). Wenn Ihr SMS ist noch nicht raus, aber Sie brauchen, um zu diagnostizieren, was Los ist. Sie sind einschließlich $contactsSms, $username, und $messageText im zurückgegebenen JSON, so wie das Aussehen? Was war $smsJobs? Bearbeiten Sie Ihre Frage und zeigen uns was dieses response.result.value aussah.
InformationsquelleAutor Karz | 2015-12-18
Schreibe einen Kommentar