当前位置: 首页 > 知识库问答 >
问题:

如何在Swift中用JSON体制作HTTP Post请求

穆旭尧
2023-03-14

我试图使用JSON主体发出HTTP post请求:

var entry1 = Response(IdQuestion: 6510,IdProposition: 10,Time: 30)
var entry2 = Response(IdQuestion: 8284,IdProposition: 10,Time: 30)
Responses.append(entry1)
Responses.append(entry2)

let list = Responses.map { $0.asDictionary }

let json = ["List":list,"IdSurvey":"102","IdUser":"iOSclient","UserInformation":"iOSClient"]


let data : NSData = NSKeyedArchiver.archivedDataWithRootObject(json)


NSJSONSerialization.isValidJSONObject(json)

let myURL = NSURL(string: "http://www.myserver.com")!
let request = NSMutableURLRequest(URL: myURL)
request.HTTPMethod = "POST"


 request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.setValue("application/json", forHTTPHeaderField: "Accept")


request.HTTPBody = data
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
    data, response, error in
    println(response)
    // Your completion handler code here
}
task.resume()

共有1个答案

壤驷雅达
2023-03-14

试试这个,

// prepare json data
let json: [String: Any] = ["title": "ABC",
                           "dict": ["1":"First", "2":"Second"]]

let jsonData = try? JSONSerialization.data(withJSONObject: json)

// create post request
let url = URL(string: "http://httpbin.org/post")!
var request = URLRequest(url: url)
request.httpMethod = "POST"

// insert json data to the request
request.httpBody = jsonData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {
        print(error?.localizedDescription ?? "No data")
        return
    }
    let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
    if let responseJSON = responseJSON as? [String: Any] {
        print(responseJSON)
    }
}

task.resume()

或者尝试一种方便的方式阿拉莫火

 类似资料:
  • 问题内容: 我有一个问题要从中的结构数组。我搜索了,没有任何帮助(这里是屏幕截图)。我有一个这样的: 以及该结构的数组: 当数组不为空时,然后我尝试在另一个类中打印它,它在调试器中显示: 数组无效。如何使其成为有效对象?而且我想知道“ app.cartclass.ProductObject”这一部分是否有问题,以使其有效? 编辑: 这是我序列化为的方法: 问题答案: 如果要从自定义对象生成JSON

  • 问题内容: 我正在通过此方法使用RESTfull Web服务: 在我的Android应用中,我想调用此方法。如何使用org.apache.http.client.methods.HttpPost给参数赋予正确的值; 我注意到我可以使用批注@HeaderParam并将标题添加到HttpPost对象。这是正确的方法吗?这样做: 在httpPost上使用setEntity方法将不起作用。它仅使用json

  • 我正在使用Java和Spring构建一个RESTAPI,我需要在我的控制器中处理一个POST请求,但我需要从该请求中提取主体,它是一个JSON,也是该请求的“来源”, 我有几个问题:首先是如何获取该请求的来源(我猜是在标题中移动的url?),是否有与@RequestBody类似的注释?。 我的第二个问题是,在这种post方法中,通常应该返回什么对象作为响应。

  • 对传递的 URL 发出一个 POST 请求。 使用 XMLHttpRequest web api 对给定的url 发出一个 post 请求。 用 setRequestHeader 方法设置 HTTP 请求头的值。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第三个参数 data ,不发送数

  • 问题内容: 使用in声明完成了Objective-C中的类(或静态)方法。 如何在Swift中实现? 问题答案: 它们被称为 类型属性 和 类型方法 ,您可以使用或关键字。

  • 问题内容: 我正在尝试解析JSON但收到此错误: 在没有更多上下文的情况下,表达类型不明确 我的代码是: 在没有尝试捕获的情况下,在Xcode 6.4中可以正常工作,但是在Xcode 7中则无法工作。 问题答案: 不要为已解码对象声明类型,因为您希望它是an,并且您正在执行转换来做到这一点。 另外,最好将零选项用于NSJSONSerialization而不是随机选项。 在我的示例中,我还使用了一个