Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我的http帖子正文的一个版本不起作用?_Ios_Json_Swift_Post - Fatal编程技术网

Ios 为什么我的http帖子正文的一个版本不起作用?

Ios 为什么我的http帖子正文的一个版本不起作用?,ios,json,swift,post,Ios,Json,Swift,Post,我正在尝试使用POST将某些内容发送到API。立柱主体由x 2属性组成 如果我将帖子正文创建为一个长字符串: let postBody=“ministryId=nameOfMinistryHere&personId=1005”然后对字符串进行如下编码urlRequest.httpBody=postBody.data(使用:string.Encoding.utf8)它工作正常 但我试图将帖子创建为字典,然后将其传递给API,但无法使其正常工作 let postBody = ["ministryId

我正在尝试使用POST将某些内容发送到API。立柱主体由x 2属性组成

如果我将帖子正文创建为一个长字符串:
let postBody=“ministryId=nameOfMinistryHere&personId=1005”
然后对字符串进行如下编码
urlRequest.httpBody=postBody.data(使用:string.Encoding.utf8)
它工作正常

但我试图将帖子创建为字典,然后将其传递给API,但无法使其正常工作

let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]
    do {
      try urlRequest.httpBody = JSONSerialization.data(withJSONObject: postBody, options: .prettyPrinted)
       } catch {
           print("problems serializing data")
       }
当我使用后一个选项时,我从服务器得到一个400错误

我错过了什么


提前感谢。

只需按如下方式制作一本词典:

let jsonBody = ["username": email, "password": password]
然后你可以这样做:

let request = NSMutableURLRequest(url: NSURL(string: "YOUR URL") as URL)
        request.httpBody = try! JSONSerialization.data(withJSONObject: jsonBody, options: .prettyPrinted)

希望有帮助

只需按如下方式制作一本词典:

let jsonBody = ["username": email, "password": password]
然后你可以这样做:

let request = NSMutableURLRequest(url: NSURL(string: "YOUR URL") as URL)
        request.httpBody = try! JSONSerialization.data(withJSONObject: jsonBody, options: .prettyPrinted)

希望有帮助

URLComponents
是用于处理多个参数的类。代码段:

let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]

let urlComponents = URLComponents(string: myURL)
let urlRequest = URLRequest(url: urlComponents.url!)

// transform the dictionary into queryItems
urlComponents.queryItems = postBody.map { URLQueryItem(name: $0, value: $1) }

urlRequest.httpBody = urlComponents.percentEncodedQuery?.data(using: String.Encoding.utf8)

URLComponents
是用于处理多个参数的类。代码段:

let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]

let urlComponents = URLComponents(string: myURL)
let urlRequest = URLRequest(url: urlComponents.url!)

// transform the dictionary into queryItems
urlComponents.queryItems = postBody.map { URLQueryItem(name: $0, value: $1) }

urlRequest.httpBody = urlComponents.percentEncodedQuery?.data(using: String.Encoding.utf8)

未知之云回复您的评论,因为我在这里发布了很长时间-:

HTTP头主要分为两种类型:HTTP请求头每当您在地址栏中键入URL并尝试访问它时,浏览器会向服务器发送HTTP请求HTTP请求头包含文本记录形式的信息,其中包括生成请求的浏览器的类型、功能和版本、客户端使用的操作系统、请求的页面、,浏览器接受的各种类型的输出,依此类推。HTTP响应头收到请求头后,Web服务器将向客户端发送HTTP响应头。HTTP响应标头以文本记录形式包含信息,Web服务器将该信息传输回客户端浏览器。响应头包含服务器返回的文件的类型、日期和大小等详细信息,以及有关服务器的信息。因此,您只需向服务器发送额外信息,让服务器知道它将接受何种请求。


内容类型:application/json;charset=utf-8指定内容为JSON格式,采用utf-8字符编码。指定编码对于JSON来说有些冗余,因为JSON的默认(仅?)编码是UTF-8。因此,在这种情况下,接收服务器显然很高兴知道它正在处理JSON,并假设默认编码为UTF-8,这就是为什么它可以使用或不使用头的原因。

未知的云回答您的评论,因为我在这里发布了很长时间-:

HTTP头主要分为两种类型:HTTP请求头每当您在地址栏中键入URL并尝试访问它时,浏览器会向服务器发送HTTP请求HTTP请求头包含文本记录形式的信息,其中包括生成请求的浏览器的类型、功能和版本、客户端使用的操作系统、请求的页面、,浏览器接受的各种类型的输出,依此类推。HTTP响应头收到请求头后,Web服务器将向客户端发送HTTP响应头。HTTP响应标头以文本记录形式包含信息,Web服务器将该信息传输回客户端浏览器。响应头包含服务器返回的文件的类型、日期和大小等详细信息,以及有关服务器的信息。因此,您只需向服务器发送额外信息,让服务器知道它将接受何种请求。


内容类型:application/json;charset=utf-8指定内容为JSON格式,采用utf-8字符编码。指定编码对于JSON来说有些冗余,因为JSON的默认(仅?)编码是UTF-8。因此,在本例中,接收服务器显然很高兴知道它正在处理JSON,并假设默认情况下编码为UTF-8,这就是它使用或不使用头的原因。

Ok,我添加了
urlRequest.setValue(“application/JSON”,forHTTPHeaderField:“Content Type”)
,它成功了。但我不知道为什么?有人能解释一下吗?有时候你需要告诉你的api你正在使用json进行请求,否则它不知道该怎么做并抛出一个E400Ok,我添加了
urlRequest.setValue(“application/json”,forHTTPHeaderField:“Content Type”)
,它成功了。但我不知道为什么?有人能解释一下吗?有时候你需要告诉你的api你正在使用json进行请求,否则它不知道该怎么做并抛出一个E400Thank,但是如果你看看我的代码,你会发现我已经创建了一个类似的字典。谢谢,但是如果你看一下我的代码,你会发现我已经创建了一个这样的字典。