2016-06-26 4 views
0
zurück

Hallo, ich gebe einige Daten an den Webservice weiter. Das ist meine urlNSURL (string: fullURL) gibt den Fehler

http://www.website.com/mobileapp/user.php?reg_device_id=566&alert_details=[{\n \"is_active\" = 1;\n \"term_id\" = 55;\n}, {\n \"is_active\" = 1;\n \"term_id\" = 2;\n}, {\n \"is_active\" = 1;\n \"term_id\" = 111;\n}, {\n \"is_active\" = 0;\n \"term_id\" = 21;\n}, {\n \"is_active\" = 0;\n \"term_id\" = 28;\n}, {\n \"is_active\" = 0;\n \"term_id\" = 1;\n}, {\n \"is_active\" = 0;\n \"term_id\" = 5;\n}, {\n \"is_active\" = 0;\n \"term_id\" = 4;\n}] 

Das ist mein Webservice Berufung

methid
for i in 0..<dm.array.count { 
     let id=dm.SettingsItems[i]["term_id"] as! String 
     var is_active="0" 

     if dm.array[i] 
     { 
      is_active="1" 
     } 

     let catRegDict:NSDictionary=["term_id":"\(id)","is_active":"\(is_active)"] 
     self.registerAyrray.append(catRegDict) 
     print("------REGISTER ARRAY------\(self.registerAyrray)") 
    } 
    let urlPath = "http://www.website.com/mobileapp/user.php?" 
    let path="reg_device_id=\(dm.DeviceID)&alert_details=\(self.registerAyrray)" 

    let fullURL = "\(urlPath)\(path)" 
    print(fullURL) 


    guard let endpoint = NSURL(string: fullURL) else { 
     print("Error creating endpoint") 
     return 
    } 

    let request = NSMutableURLRequest(URL:endpoint) 
    NSURLSession.sharedSession().dataTaskWithRequest(request,completionHandler: { (data, response, error) in 
     do { 

aber scheint diese Bedingung nicht befriedigend. Ich kann sehen, dass es diese Fehlermeldung vorgibt.

Aber wenn ich die oben genannte URL im Browser setze gibt mir das die Serviceantwort. Was ist der Grund dafür? Bitte hilf mir. Danke

Antwort

0

Versuchen Sie url zu kodieren und dann NSURL Objekt wie folgt erstellen.

let url = fullURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

nun diese url in NSURL Initialisierung übergeben.

Hoffe, das wird Ihnen helfen.

+0

Danke. es funktionierte :) – user1960169

+0

welcome ....... :) –

1

Es ist, weil Ihre URL nicht gültige URL ist. Sie müssen encode url es vor dem Gebrauch.

urlString.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet()) 
+0

Codierung mit utf8 oder wie muss ich es tun? – user1960169

+0

@ user1960169 überprüfen Sie update – Arsen

1

URLs dürfen keine Leerzeichen oder "[" oder verschiedene andere Zeichen enthalten. Wenn Sie die Xcode-Dokumente in URLWithString lesen, heißt das:

Die URL-Zeichenfolge, mit der das NSURL-Objekt initialisiert werden soll. Muss eine URL sein, die 2396. Diese Methode RFC entspricht parst URLString zu RFCs 1738 und 1808. nach

diese RFCs online weitere Informationen nachschlagen.

@Arsen gibt Ihnen den Code, um die URL korrekt zu umgehen, aber warum versuchen Sie, eine URL zu senden, die Leerzeichen enthält, und wie generieren Sie die Abfragezeichenfolge für alert_details? Die Zeichenfolge "alert_details" sieht ein wenig wie hübsch gedruckte JSON aus. Sie sollten kein schön gedrucktes Format für URL-Parameter verwenden.

+0

ist ein Array wie dieses var registerAyrray: Array = Array () Wie kann ich es in einen einfachen Text konvertieren? – user1960169