1
私はOAuth2.0 APIを使用しています。私のcURLコマンドラインではうまく動作しますが、スワイプコードではうまく動作しません。cURLコマンドラインをSwiftに変換するcURLは機能しません
私はこれらの他のStackOverflowの投稿を読んだが、うまくいかなかった:firstとsecond。 curl -X POST --data "grant_type=client_credentials&client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET" https://api.myapp.fr/oauth/token
と私のSWIFTコードは次のとおりです:
実は、私のcurlコマンドがある最初のケースで
var dataStr: String!
let request = NSMutableURLRequest(url: NSURL(string: "https://api.myapp.fr/oauth/token")! as URL)
let session = URLSession.shared
request.httpMethod = "POST"
request.setValue("plain/text", forHTTPHeaderField: "Content-Type")
let params = ["grant_type" : "client_credentials",
"client_id" : "MY_CLIENT_ID",
"client_secret" : "MY_CLIENT_SECRET"] as Dictionary<String, String>
let httpData = NSKeyedArchiver.archivedData(withRootObject: params)
request.httpBody = httpData
let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in
dataStr = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) as String!
print("Data -> ")
print(dataStr)
})
task.resume()
は、要求がうまくフォーマットされ、かつ迅速にそうではありません。 どうしたのですか?あなたのAPIのような
おかげ
まず、ネイティブのSwift構造体(URLRequest、URL、String)を使用し、可能性のあるオプションに対して強制アンラッピングを使用しないでくださいnil(完了ハンドラのデータなど)。バックエンドからどんなエラーが出ていますか? –
私のバックエンドは、要求の形式が正しくないことだけを知っています。 – LeCintas
あなたの質問には、期待しているリクエストの本文と実際のリクエストの本文を含めてください。また、cURLリクエストにContent-Typeヘッダーがない場合、なぜContent-typeをplain/textに設定していますか? –