2016-06-26 7 views
0

こんにちは私はいくつかのデータをwebserviceに渡しています。これはNSURL(string:fullURL)はエラーを返します

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}] 

私のURLですこれは

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 { 

methidを呼び出す私のWebサービスである。しかし、この条件は満たさないようです。私はそのエラーメッセージをprenting見ることができます。

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

しかし、上記のURLをブラウザに入力すると、サービス応答が表示されます。この理由は何ですか?私を助けてください。 ありがとう

答えて

0

はあなたにurlをエンコードしてから、このようNSURLオブジェクトを作成してください。

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

は今、このurlNSURLで初期化を渡します。

希望すると、これが役立ちます。

+0

ありがとうございます。それは働いた:) – user1960169

+0

ウェルカム....... :) –

1

あなたのURLは有効なURLではないためです。あなたは使用する前にそれをencode urlする必要があります。

urlString.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet()) 
+0

utf8を使用してエンコードするか、どうすればよいですか? – user1960169

+0

@ user1960169更新をチェックアウト – Arsen

1

URLにはスペースや「[」などのさまざまな文字を使用できません。 URLWithStringでXcodeドキュメントを読むと、次のようになります。

NSURLオブジェクトを初期化するためのURL文字列です。 RFC 2396に準拠し URLでなければなりません。この方法ではURLString解析したRFC 1738に と1808

に従って詳細は、オンラインこれらのRFCを検索します。

@ArsenはURLを正しくエスケープするコードを提供しますが、スペースの実行を含むURLを送信しようとしているのはなぜですか?また、alert_detailsのクエリ文字列をどのように生成していますか? alert_details文字列は、きれいに印刷されたJSONのように見えます。 URLパラメータには、きれいに印刷された形式を使用しないでください。

+0

そのような配列var registerAyrray:Array = Array ()どのようにプレーンテキストに変換できますか? – user1960169