2017-11-16 15 views
1

SwiftのShippo REST APIのリクエストですが、API認証キーが必要なので、Swift 4のURLSessionにキーを実装する方法がわかりません。アップルのドキュメントには、urlsession.sharedメソッドを使用することはできません。 cURLコマンドは次のとおりです。のようなものについて何Swift API認証キー付きの4つのURLセッション

curl https://api.goshippo.com/addresses/ \ 
-H "Authorization: ShippoToken shippo_test_Token_Here" \ 
-d name="Shawn Ippotle" \ -d company="Shippo" \ 
-d street1="215 Clayton St." \ 
-d street2="" \ 
-d city="San Francisco" \ 
-d state="CA" \ 
-d zip=94117 \ 
-d country="US" \ 
-d phone="+1 555 341 9393" \ 
-d email="[email protected]"\ 
-d is_residential=True\ 
-d metadata="Customer ID 123456" 
+0

私は間違いなくあなたがAlamofireでそれを行う方法私を見ることができ、この –

+0

@NevinJethmalaniを行うにはAlamofireを使用することをお勧めしますか? – mnaghd01

+0

もちろんあります。私はちょうどそれを投稿した。それが役に立ちましたら、私の答えを受け入れることができます。同様の問題を持つ他の人を助けるかもしれない。 –

答えて

2

それはAlamofireを使用しています。私はこれが役立つことを願っています私はそれを試して、それは動作します。

func mainRequest(){ 

    var headers: HTTPHeaders = [ 
     "content-type": "application/json" 
    ] 

    let credentials = "shippo_test_8dc780c66d5dae1c42868596c0b359ba89108df9" 
    headers["Authorization"] = "ShippoToken \(credentials)" 

    var parameters:Parameters = [String : Any]() 

    parameters["name"] = "Shawn Ippotle" 
    parameters["company"] = "Shippo" 
    parameters["street1"] = "215 Clayton St." 
    parameters["street2"] = "" 
    parameters["city"] = "San Francisco" 
    parameters["state"] = "CA" 
    parameters["zip"] = "94117" 
    parameters["phone"] = "+1 555 341 9393" 
    parameters["country"] = "US" 
    parameters["email"] = "[email protected]" 
    parameters["is_residential"] = "True" 
    parameters["metadata"] = "Customer ID 123456" 

    let url = "https://api.goshippo.com/addresses" 

    Alamofire.request(url, method: .post, parameters: parameters , encoding: JSONEncoding.default, headers: headers) 
     .responseJSON { (response) in 
      switch response.result { 
      case .success(let value): 
       let swiftyJson = JSON(value) 
       print ("return as JSON using swiftyJson is: \(swiftyJson)") 
      case .failure(let error): 
       print ("error: \(error)") 
      } 

    } 
} 
1

:ここ

// preparing http request 
let yourUrl = URL(string: "https://api.goshippo.com/addresses/")! // whatever is your url 
let yourAuthorizationToken = "ShippoToken shippo_test_Token_Here" // whatever is your token 
let yourPayload = Data() // whatever is your payload 

var request = URLRequest(url:yourUrl) 
request.httpMethod = "POST" 
request.setValue(yourAuthorizationToken, forHTTPHeaderField: "Authorization") 
request.httpBody = yourPayload 

// executing the call 
let session = URLSession(configuration: URLSessionConfiguration.default) 
let task = session.dataTask(with: request, completionHandler: {data, response, error -> Void in 
    // your stuff here 
}) 
task.resume() 
+0

URLRequestをURLRequestとしてキャストするのは無意味です –

関連する問題