web-dev-qa-db-ja.com

swiftエラー "ドメイン= NSCocoaErrorDomainコード= 3840"文字1の周囲の値が無効です。 "

Swift Alamofire POSTリクエスト(ユーザーにログインするため)でこのエラーメッセージを修正するのに問題があります。

'3840' "文字1の周囲の値が無効です。"

FoundationをインポートしましたAlamofireSwiftyJson。承認の制限はありません(Oauthなど)。投稿を変更したとき(たとえば、他のパラメーターと値を使用して別のエンドポイントに)したときにも同じエラーメッセージが表示されますが、残りは保持します)私のdrupal7 REST server'definitions 'では、エンドポイントは/ rest/user/loginとして、パラメーターは' username 'として、' password '文字列はI'としてリストされます。使用しました。

ヒントや助けを本当にいただければ幸いです。

rEQUESTの呼び出しエラーエラードメイン= NSCocoaErrorDomainコード= 3840「文字1の周囲の値が無効です。」 UserInfo = {NSDebugDescription =文字1の周囲の値が無効です。}

これは私のコードです

 @IBAction func loginButtonTapped(sender: AnyObject) {

    //using Alamofire

    let dataEndpoint: String = "https://www.example.com/rest/user/login"
    let newData = ["username":"Mickey", "password":"123"]
    Alamofire.request(.POST, dataEndpoint, parameters: newData, encoding: .JSON)
        .responseJSON { response in
            guard response.result.error == nil else {
                // got an error in posting the data, need to handle it
                print("error calling REQUEST")
                print(response.result.error!)
                return
            }

            guard let value = response.result.value else {
                print("no result data  when calling request")
                return
            }
            let data = JSON(value)
            print("The result is: " + data.description)
    }

}

ありがとうございました

7
Dimitri T

URLエンドポイントの最後に.jsonを追加すると、エラーが解決しました。すなわち https://www.example.com/rest/user/login.json

1
Dimitri T

これは、サーバーからの応答が有効なJSONでなく、読み取り不可能な文字(htmlなど)が含まれていることを示すエラーです。基本的に、アップロードがうまくいかなかった(サーバーで受け入れられなかったため、json応答が表示されなかった)か、そうでなかったことを意味します。 json応答を正しく設定し、htmlが含まれていることを確認します。後者は、ブラウザのページを見てソースを確認することで確認できます。

お役に立てれば!

追伸:実際のコードで有効なURLを使用していると思いますか? ;-)

4
Robski18

問題が実際にサーバー側のDjangoでのインポートエラーであったときに、このエラーが発生しました。wiresharkでtcpストリームをたどると、次のようになります。

'ImportError':<type'exceptions.ImportError '>、

1
DevB2F

最初は機能していて、現在はシリアル化に失敗している場合は、サーバーがダウンしていることが原因である可能性があります。サーバーダウンページ(html)が応答として返されます。したがって、APIを確認することを忘れないでください Error Page ブラウザで。

0
Emu Malik

エラー「3840文字1の周りの値が無効です」も404ページが見つかりませんエラーだと思います

つまり、Alamofireは実際にはサーバー側に接続していませんでした。

このガイドラインを覚えておいてください:

  1. ダブルまたはトリプルはあなたのURLエンドポイントをチェックすると言うべきです。
  2. また、正しいパラメータエンコーディングを使用しているかどうかも確認してください。
  3. APIリクエスト用にAlamofireルーターを作成することをお勧めします。 ( https://github.com/Alamofire/Alamofire#crud--authorization
0
J. Goce