- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 API 请求,它应该 POST 一些 json:
class func makeAPICall (serializedJSONObject contentMap: Dictionary<String, String>, completion: ((data: NSData?, response: NSURLResponse?, error: NSError?) -> Void)) throws -> Void {
var jsonData: NSData
do {
jsonData = try NSJSONSerialization.dataWithJSONObject(contentMap, options: NSJSONWritingOptions())
var jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding) as! String
print(jsonString)
jsonString = jsonString.stringByAddingPercentEncodingForFormUrlencoded()!
print(jsonString)
jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding)!
let postsEndpoint: String = "https://www.example.com/api/v2"
guard let postsURL = NSURL(string: postsEndpoint) else {
throw APICallError.other("cannot create URL")
}
let postsURLRequest = NSMutableURLRequest(URL: postsURL)
print(jsonData)
postsURLRequest.HTTPBody = jsonData
print(postsURLRequest)
postsURLRequest.HTTPMethod = "POST"
let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let task = session.dataTaskWithRequest(postsURLRequest, completionHandler: {
(data, response, error) in
completion(data: data, response: response, error: error)
})
task.resume() //starts the request. It's called resume() because a session starts in a suspended state
} catch {
print("lol, problem")
}
}
带有扩展名(用于x-www-form-urlencoded
编码):
extension String {
func stringByAddingPercentEncodingForFormUrlencoded() -> String? {
let characterSet = NSMutableCharacterSet.alphanumericCharacterSet()
characterSet.addCharactersInString("-._* ")
return stringByAddingPercentEncodingWithAllowedCharacters(characterSet)?.stringByReplacingOccurrencesOfString(" ", withString: "+")
}
}
现在我也有这个简单的测试页面来测试 json 请求:
<form action="v2/" method="post">
<textarea name="data" rows="20" cols="80"></textarea>
<input type="submit" />
</form>
服务器记录所有请求,这样我就发现我的应用实际上使用的是 GET 而不是 POST
应用程序请求日志:
GET /api/v2/ HTTP/1.1
HTTP headers:
Host: www.example.com
Accept: */\*
Cookie: PHPSESSID=vd61qutdll216hbs3a677fgsq4
User-Agent: KM%20registratie%20tabbed%20NL/1 CFNetwork/758.2.8 Darwin/15.2.0
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: keep-alive
Request body:
(请注意,请求正文也是空的,但我会为此提出一个不同的问题)
html表单请求日志:
POST /api/v2/ HTTP/1.1
HTTP headers:
Host: www.example.com
Origin: http://www.example.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/\*;q=0.8
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9
Referer: http://www.example.com/api/test.php
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Request body:
data=%7B%22action%22%3A+%22vehicleRecords%22%2C%0D%0A%22token%22%3A+%22token_04e01fdc78205f0f6542bd523519e12fd3329ba9%22%2C%0D%0A%22vehicle%22%3A+%22vehicle_e5b79b2e%22%7D
最佳答案
你能先尝试一下吗?
if let postEndpoint: NSURL = NSURL(string: "https://www.example.com/api/v2") {
let postURLRequest: NSMutableURLRequest = NSMutableURLRequest(URL: postEndpoint)
postURLRequest.HTTPMethod = "POST"
postURLRequest.HTTPBody = UTF8EncodedJSON
NSURLSession.sharedSession().dataTaskWithRequest(postURLRequest, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
}).resume()
}
关于swift - NSMutableURLRequest.HTTPMethod 未设置正确的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707791/
基本上,我想实现SYNC功能;如果互联网连接不可用,数据将存储在本地 sqlite 数据库中。只要互联网连接可用,SYNC 就会开始工作。 现在,举个例子;本地存储5条记录,然后可以连接互联网。我想更
我创建 NSMutableUrlRequest 用于将数据发送到服务器,向其中添加所有必需的字段,然后添加用于发送的字符串,如下所示: [theRequest setHTTPBody:[postStr
早上好,我正在开发一个上传一些文件的应用程序;没有真正的问题,但只有一个大问题:如果我尝试上传 1GB 的文件,它会分配 1GB 的内存,你可以理解这不是一件好事。 这是我的代码:我将数据分配为 NS
我需要在 WebView 中通过 POST 发送大量数据(图像文件),因此我将 NSMutableURLRequest 与 setHTTPBody: 结合使用>. 问题:如果数据大小超过 3MB,应用
当设置 NSMutableURLRequest 的“授权” header 时,我的服务器对 header 的响应不包括该 header : [Host] => myhost.com [Content-
我正在使用xcode 5.1.1对我的iOS项目进行逻辑单元测试 对于下面的代码,NSLog的输出两次都是“Handles cookies NO”: NSMutableURLRequest *newR
Apple 的 iOS 文档 NSMutableURLRequest说: NSURLConnection makes a deep copy of each NSMutableURLRequest o
在您阅读本文之前,请记住我是一名 Objective C 程序员,正试图帮助一位对我的工作一无所知的 C# 程序员调试服务器问题。 我正在向 .net/c# 端发送一个 SOAP 数据包,服务器接收到
我尝试将 NSMutableURLRequest 的请求超时设置为 120,但它被忽略。请求超时在 90 秒内失败。谁能告诉我如何设置 NSMutableURLRequest 的请求超时? .我浏览了
我正在使用 NSMutableURLRequest 向服务器发出 HTTP 请求。现在,由于网络缓慢,需要一些时间才能获得响应,在这期间我想从我的应用程序注销。由于在注销之前已经向服务器发送了多个请求
我有一个带有 webservice 的字符串。但是当我将字符串添加到 NSMutableRequest 时,方法返回变为 null。这是我的代码, -(NSMutableURLRequest *)cr
NSString *url = [NSString stringWithFormat: @"http://apis.haoservice.com/weather?cityname=%@&key=%@"
我收到一条错误消息,提示“参数标签'(URL:, cachePolicy:, timeoutInterval:)' 不匹配任何可用的重载”,我不知道如何解决这个问题,有人知道吗?我正在使用 Swift
我有子类 NSMutableURLRequest 如下: class CustomNSMutableURLRequest: NSMutableURLRequest { convenience
我有 2 个独立的 NSOperationQueues,其中并行处理两个不同的 Web 服务操作。对于这两个 Web 服务,超时间隔都设置为 120 秒(2 分钟)。这两个 Web 服务在 Inter
我想向 NSMutableURLRequest 添加额外的字段(例如 NSString 值 requestID),以便在 时确定请求的正确处理程序>NSURLSession 完成它。 创建自定义 NS
我正在使用 NSMutableURLRequest 将 base64 编码的图像作为发布请求的一部分发送到服务器。我作为帖子正文记录的内容和服务器收到的内容不是一回事。服务器似乎得到了一个截断的版本,
如何使用 NSLog 打印 NSMutableURLRequest ? 最佳答案 .allHTTPHeaderFields 返回带有标题内容的字典: NSLog(@"%@", [request all
我尝试制作一个登录页面以使用户对网站进行身份验证。我尝试过类似的事情: NSURL *myURL = [NSURL URLWithString:@"https://www.freelancer
我正在尝试使用以下方法实现下载恢复功能setValue:forHTTPHeaderField。但每当我使用该方法时,我都会得到一个 [NSURLRequest setValue:forHTTPHead
我是一名优秀的程序员,十分优秀!