2017-10-02 2 views
0

Ich habe einen Server läuft in Node, ich versuchte mit Postman und es funktioniert gut, aber wenn ich es vom IOS-Client ausführen, führt es nicht die URL, überprüfte ich meinen Server es nicht einmal die APIAlamofire führt die URL nicht

Node Server

router.post('/api/accounts/login', (req, res, next) => { 
    var user = new User(): 
    user.name = req.body.name; 
    user.pass = req.body.password; 
    user.save((err) => { 
    res.json("Success"); 
    }); 
}); 

Alamofire genannt

let mainURL = "https://examplelogin.com" 
let facebookLogin = "\(mainURL)/api/accounts/login" 

func loginButtonTapped(_ name: String, _ pass: String) { 

     let parameters: [String: AnyObject] = [ 
      "name": name as AnyObject, 
      "password": pass as AnyObject 
     ] 

     Alamofire.request(facebookLogin, method: .post, parameters: parameters, encoding: JSONEncoding.default) 
      .responseJSON { response in 
       if let value = response.result.value { 
        let json = JSON(value) 

        // Do something 


       } 
     } 

} 

um genauer zu sein, war ich Gastgeber mein Knoten-Server auf Heroku, ich Namecheap verwenden Sie den vollständigen Domain-Namen zu erhalten aber dafür mehow mein ios client führt die API nicht aus, muss ich etwas auf der Info.plist hinzufügen?

+0

Alamofire führt nicht einmal die API – sinusGob

+0

@sinusGob Sie "Content-Type" festlegen und überprüfen? –

+0

Erhalten Sie Warnungen im Debug-Fenster? – ozgur

Antwort

1

versuchen diese

diesen Code für die Show Fehler 1.Add.

else if let ERROR = response.result.error { 
    print(ERROR.localizedDescription) 
} 

2. Fügen Sie diesen Code in die Datei info.plist ein.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> <true/> 
</dict> 
+0

' NSAppTransportSecurity NSAllowsArbitraryLoads ' dieser Code gespeichert mich auf jeden Fall! – sinusGob

+0

@sinusGob glücklich, Ihnen zu helfen :) –

0
Try this code ... 

func loginButtonTapped(_ name: String, _ pass: String) { 

    let parameters = [ 
       "name": name, 
       "password": pass 
      ] 
      Alamofire.request(facebookLogin, method: .post, parameters: parameters as [String : AnyObject], encoding: JSONEncoding.default) 
       .responseJSON { response in 
        if let value = response.result.value { 
         let json = JSON(value) 

         // Do something 

        } 
      } 

    } 
-1

Ich hatte das gleiche Problem, aber ich habe dadurch behoben: -

lassen jsonData = versuchen! JSONSerialization.data (withJSONObject: dict (das Wörterbuch, das Sie übergeben möchten, welche Parameter enthält), Optionen: JSONSerialization.WritingOptions.prettyPrinted)

let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)! as String 

    Alamofire.request(url, method: .post, parameters: jsonString, encoding:JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in 
     switch(response.result) 
     { 

     } 
    } 
+0

Nein. JSON String ist für Menschen. JSON-Daten sind für Computer bestimmt. Sie müssen * die Daten nicht in eine Zeichenfolgendarstellung konvertieren. Wenn Ihr Server eine JSON-Zeichenfolge verlangt, beheben Sie Ihren Server. Aber das ist nicht die Lösung für diese Frage. // Und trotzdem tust du es falsch. Warum initialisierst du einen NSString und forcierst ihn dann auf einen String ?! Sie sollten direkt eine Zeichenfolge erstellen. Alles in allem ist dieser ganze Code nutzlos und unnötig. – Moritz

Verwandte Themen