将curl命令转换为iOS

杰森·贾维尔

以下卷曲作品

curl -G -H "api_key: MYAPIKEY" https://api.semantics3.com/test/v1/products -d 'q={"upc":"70411576937"}'

但是,尝试将其转换为iOS时,出现以下错误:

Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." {NSErrorFailingURLStringKey=https://api.semantics3.com/test/v1/products,...}

我已经在下面附加了我的代码,但是我认为我的问题是正在提交到URL的json数据之前的“ q =“。如果是这样,这叫什么?如何在json数据前加上“ q =”?由于iOS为我们提供不相关的错误消息的坚定能力,我无法确切地说出。谢谢你。

    var urlString = "https://api.semantics3.com/test/v1/products"
    var request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
    var response: NSURLResponse?
    var error: NSErrorPointer = nil
    var reqText = ["upc": "70411576937"]
    var err: NSError?

    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(reqText, options: nil, error: &err)
    request.HTTPMethod = "GET"
    request.addValue("MYAPIKEY", forHTTPHeaderField: "api_key")
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")
    var session = NSURLSession.sharedSession()

    var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
        if(err != nil) {
            println(err!.localizedDescription)
        }
        else {
            //this is where the error is printed
            println(error)
            var parseError : NSError?
            // parse data
            let unparsedArray: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &parseError)
            println(parseError)
            if let resp = unparsedArray as? NSDictionary {
                println(resp)
            }
        }
    })
    task.resume()
劳伦特

GET HTTP方法中未使用主体。使用以下代码来连接您的参数:

extension String {

    /// Percent escape value to be added to a URL query value as specified in RFC 3986
    ///
    /// This percent-escapes all characters besize the alphanumeric character set and "-", ".", "_", and "~".
    ///
    /// http://www.ietf.org/rfc/rfc3986.txt
    ///
    /// :returns: Return precent escaped string.

    func stringByAddingPercentEncodingForURLQueryValue() -> String? {
        let characterSet = NSMutableCharacterSet.alphanumericCharacterSet()
        characterSet.addCharactersInString("-._~")

        return self.stringByAddingPercentEncodingWithAllowedCharacters(characterSet)
    }

}

extension Dictionary {

    /// Build string representation of HTTP parameter dictionary of keys and objects
    ///
    /// This percent escapes in compliance with RFC 3986
    ///
    /// http://www.ietf.org/rfc/rfc3986.txt
    ///
    /// :returns: String representation in the form of key1=value1&key2=value2 where the keys and values are percent escaped

    func stringFromHttpParameters() -> String {
        let parameterArray = map(self) { (key, value) -> String in
            let percentEscapedKey = (key as! String).stringByAddingPercentEncodingForURLQueryValue()!
            let percentEscapedValue = (value as! String).stringByAddingPercentEncodingForURLQueryValue()!
            return "\(percentEscapedKey)=\(percentEscapedValue)"
        }

        return join("&", parameterArray)
    }

}


var urlString = "https://api.semantics3.com/test/v1/products"
var reqText = ["upc": "70411576937"]
var err: NSError?

let parameterString = reqText.stringFromHttpParameters()
let requestURL = NSURL(string:"\(urlString)?\(parameterString)")!

var request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
var response: NSURLResponse?
var error: NSError?

request.HTTPMethod = "GET"
request.addValue("MYAPIKEY", forHTTPHeaderField: "api_key")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var session = NSURLSession.sharedSession()

部分编辑:SWIFT 2.1(已更新)

extension Dictionary {

    func stringFromHttpParameters() -> String {
        let parameterArray = self.map { (key, value) -> String in
            let percentEscapedKey = (key as! String).stringByAddingPercentEncodingForURLQueryValue()!
            let percentEscapedValue = (value as! String).stringByAddingPercentEncodingForURLQueryValue()!
            return "\(percentEscapedKey)=\(percentEscapedValue)"
        }

        return parameterArray.joinWithSeparator("&")
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将curl命令转换为php curl

来自分类Dev

将curl命令转换为httparty

来自分类Dev

将cURL命令转换为ajax

来自分类Dev

将curl命令转换为netcat?

来自分类Dev

将命令curl转换为javascript

来自分类Dev

将Curl命令转换为Java / Android

来自分类Dev

将curl命令转换为python代码

来自分类Dev

将curl命令转换为AFNetworking调用

来自分类Dev

将Curl命令转换为Java / Android

来自分类Dev

将curl命令转换为PHP代码

来自分类Dev

将curl命令转换为pycurl

来自分类Dev

将Curl命令转换为目标C

来自分类Dev

将curl命令转换为httparty

来自分类Dev

将cURL命令转换为ajax

来自分类Dev

将 curl 命令转换为 PHP

来自分类Dev

如何将Curl转换为iOS

来自分类Dev

将命令行curl转换为PHP curl函数

来自分类Dev

将curl命令转换为PHP cURL-kaaProject

来自分类Dev

如何将curl命令转换为php curl代码?

来自分类Dev

如何将Linux命令CURL转换为PHP

来自分类Dev

将CURL命令行转换为PHP

来自分类Dev

将curl命令转换为python pycurl或请求

来自分类Dev

将javascript Http上传脚本转换为Curl命令

来自分类Dev

将curl命令转换为request.post

来自分类Dev

将splunk api curl命令转换为python

来自分类Dev

Ruby:将curl命令转换为Ruby net / http请求

来自分类Dev

将curl命令从google-colab转换为python脚本

来自分类Dev

如何将curl命令输出转换为变量

来自分类Dev

将curl命令转换为C#代码