Сократите URL с помощью API Google, AFNetworking в Swift

В документации Google ( https://developers.google.com/url-shortener/v1/getting_started), чтобы использовать сокращение URL Google, я должен сделать запрос, как показано ниже:

POST https://www.googleapis.com/urlshortener/v1/url

Тип контента: приложение / JSON

{"longUrl": " http://www.google.com/"}

Они также заявили, что мне придется подтвердить подлинность:

"Каждый запрос, который ваше приложение отправляет в Google URL Shortener API, должен идентифицировать ваше приложение в Google. Существует два способа идентифицировать ваше приложение: с помощью токена OAuth 2.0 (который также авторизует запрос) и / или с помощью ключа API приложения."

Я выбрал открытый ключ API в качестве метода аутентификации: я создаю открытый ключ для своего приложения iOS. Затем я использую следующий код для POST (AFNetworking, используя Swift):

func getShortURL(longURL: String){
    let manager = AFHTTPRequestOperationManager()
    let params = [
        "longUrl": longURL
    ]
    manager.POST("https://www.googleapis.com/urlshortener/v1/url?key={my_key_inserted}", parameters: params, success: {
        (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
            println("JSON: " + responseObject.description)
        },
        failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
            println("Error while requesting shortened: " + error.localizedDescription)
    })
} 

Тем не менее, я получил журнал: Ошибка при запросе сокращен: Запрос не выполнен: неправильный запрос (400).

Подскажите пожалуйста как это исправить.

1 ответ

Решение

Чего вам не хватает, так это установки правильного сериализатора AFNetworking для этого запроса.

Поскольку ответ Google в формате JSON, вы должны использовать AFJSONRequestSerializer,

добавлять manager.requestSerializer = AFJSONRequestSerializer() как это:

    let manager = AFHTTPRequestOperationManager()
    manager.requestSerializer = AFJSONRequestSerializer()
    let params = ["longUrl": "MYURL"]
    manager.POST("https://www.googleapis.com/urlshortener/v1/url?key=MYKEY", parameters: params, success: {(operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
        println("JSON: " + responseObject.description)
            }, failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
        println("Error while requesting shortened: " + error.localizedDescription)
    })
Другие вопросы по тегам