2017-07-05 18 views
2

ドメインの可用性をチェックするアプリを構築しています。今、私はgoDaddy APIを使用しています。 GoDaddyはによると、URLの可用性を確認する方法は、次のcurlコマンドである:SwiftでcUrlコマンドをHTTPリクエストに変換する

curl -X GET -H "Authorization: sso-key {API_KEY}:{API_SECRET}" "https://api.godaddy.com/v1/domains/available?domain=example.guru" 

今、私はスウィフトにそのcurlコマンドを翻訳しようとしています。私はAlamofireを使用しています。しかし、私は要求を行う際に、次のようなエラーが現れる:

資格情報は、私はこの問題を解決するためにどのように思っていた

を指定する必要があります。ここに私の現在のコードです:

class ViewController: UIViewController { 

    let key = "KEYKEYKEY" 
    let secret = "SECRETSECRET" 

    var headers: HTTPHeaders = [:] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let credential = URLCredential(user: key, password: secret, persistence: .forSession) 

     Alamofire.request("https://api.godaddy.com/v1/domains/available?domain=example.guru") 
      .authenticate(usingCredential: credential) 
      .responseJSON { response in 
       debugPrint(response) 
     } 

     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

代わりにキー/シークレットをヘッダーに設定しますか?また、私の思うところには「ソー・キー」はありません。 – Larme

+0

Alamofire.request( "https://api.godaddy.com/v1/domains/available?domain=example.guru"、ヘッダー:[文字列(形式: "Authorization:sso-key%@:%@"、key 、secret)])。responseJSON – AleX

答えて

2

私は、これはAlamofireを使用していないことを知っているが、これは私がそれを達成する方法です。

import PlaygroundSupport 
import Foundation 
let key = "2s7Ymz8gu7_8XuTEeMFVmxJBLmyNNL4n8" 
let secret = "8XuXAs8K37ejtYqvsEue2p" 

let url = URL(string: "https://api.ote-godaddy.com/v1/domains/available?domain=example.guru&checkType=FULL") 

var request = URLRequest(url: url!) 

request.addValue("application/json", forHTTPHeaderField: "Accept") 
request.addValue("sso-key \(key):\(secret)", forHTTPHeaderField: "Authorization") 
let task = URLSession.shared.dataTask(with: url!) { data, response, error in 
    guard error == nil else { 
     print(error!) 
     return 
    } 
    guard let data = data else { 
     print("Data is empty") 
     return 
    } 

    let json = try! JSONSerialization.jsonObject(with: data, options: []) 
    print(json) 
} 

task.resume() 
PlaygroundPage.current.needsIndefiniteExecution = true 
+0

ありがとう!それは問題を解決するようだ – Danny

関連する問題