2017-11-16 2 views
1

Swift의 Shippo REST API 요청을하려고하는데 API 인증 키가 필요하므로 Swift 4의 URLSession 키를 구현하는 방법을 알 수 없습니다. Apple 설명서에는 urlsession.shared 메서드를 사용할 수 없다고 나와 있습니다. cURL 명령은 다음과 같은 대해 어떻게Swift API 인증 키가있는 4 개의 URLession

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로 전송하는 것은 의미가 없습니다. –