- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要制作一个如下所示的请求正文:
{
"accepted" : [
{
"deposit" : 2000,
"name" : "Tuxedo",
"rent" : 100,
"id" : 3,
"favourited_by" : [
],
"tag_id" : 21,
"status" : "unknown",
"image_url" : "https:\/\/www.moss.co.uk\/images\/extralarge\/965549415_01.jpg",
"addresses" : [
]
},
{
"deposit" : 3000,
"name" : "ps4",
"rent" : 50,
"id" : 2,
"favourited_by" : [
],
"tag_id" : 16,
"status" : "unknown",
"image_url" : "http:\/\/www.spokeslabs.com\/jstone\/ps4_images\/ps4-hrdware-large18.jpg",
"addresses" : [
]
},
{
"deposit" : 1000,
"name" : "Electric drill",
"rent" : 100,
"id" : 1,
"favourited_by" : [
],
"tag_id" : 11,
"status" : "unknown",
"image_url" : "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2016\/06\/20\/12\/ryobi-rpd800-k-percussion-d.jpg",
"addresses" : [
]
}
],
"rejected" : [
],
"address" :
{
"city" : "Hong Kong",
"lng" : "114.162699999745",
"country" : "Hong Kong",
"street" : "Barker Road",
"id" : "0",
"label" : "Home",
"lat" : "22.269837686727"
}
}
很遗憾,我要发送这个:
{
"accepted" : [
{
"deposit" : 2000,
"name" : "Tuxedo",
"rent" : 100,
"id" : 3,
"favourited_by" : [
],
"tag_id" : 21,
"status" : "unknown",
"image_url" : "https:\/\/www.moss.co.uk\/images\/extralarge\/965549415_01.jpg",
"addresses" : [
]
},
{
"deposit" : 3000,
"name" : "ps4",
"rent" : 50,
"id" : 2,
"favourited_by" : [
],
"tag_id" : 16,
"status" : "unknown",
"image_url" : "http:\/\/www.spokeslabs.com\/jstone\/ps4_images\/ps4-hrdware-large18.jpg",
"addresses" : [
]
},
{
"deposit" : 1000,
"name" : "Electric drill",
"rent" : 100,
"id" : 1,
"favourited_by" : [
],
"tag_id" : 11,
"status" : "unknown",
"image_url" : "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2016\/06\/20\/12\/ryobi-rpd800-k-percussion-d.jpg",
"addresses" : [
]
}
],
"rejected" : [
],
"address" : [
{
"city" : "Hong Kong",
"lng" : "114.162699999745",
"country" : "Hong Kong",
"street" : "Barker Road",
"id" : "0",
"label" : "Home",
"lat" : "22.269837686727"
}
]
}
区别在于 JSON 的最后一部分。我发送的内容包含一组地址,但我想发送的内容只包含一个地址对象。
此请求正文通过以下方式创建:
var parameters = [String:[AnyObject]]()
parameters["rejected"] = rejectedItemsArray as [AnyObject]
parameters["accepted"] = acceptedItemsArray as [AnyObject]
parameters["address"] = addressArray as [AnyObject]
let request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
request.setValue(self.token!, forHTTPHeaderField: Constant.tokenUserDefaultsKey)
request.HTTPMethod = "POST"
do {
let data = try NSJSONSerialization.dataWithJSONObject(parameters, options: .PrettyPrinted)
let requestBodyString = String(data: data, encoding: NSUTF8StringEncoding)
NSLog("Request Body: %@", requestBodyString!)
request.HTTPBody = data
} catch ( _) {
NSLog("Failed to encode json for Post Items")
}
我该如何解决?
我想在我的 JSON 中有 2 个数组:
1 - “已接受”2 - “拒绝”
我的 JSON 中有 1 个对象:
1 - “地址”
最佳答案
问题出在这一行 parameters["address"] = addressArray as [AnyObject]
。您正在使用 address
键设置 Array
而不是您需要设置字典。所以像这样创建 addressDic。
let adddressDic = ["city" : "Hong Kong", "lng" : "114.162699999745", "country" : "Hong Kong",
"street" : "Barker Road", "id" : "0", "label" : "Home", "lat" : "22.269837686727"]
现在用address
键设置这个Dictionary
parameters["address"] = adddressDic
编辑:您还需要像这样更改参数声明。
var parameters = [String:AnyObject]()
关于ios - 为 Alamofire 创建请求主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42411205/
我需要做一个 POST请求带有 JSON 的 HTTP 正文对象,但我还需要在同一个请求中使用 url 查询参数。 POST: http://www.example.com/api/create?pa
这里是原始的 github issue , 支持者建议在这里开一个帖子以获得更多公众支持。 我正在使用 xcode 6.4。 $ pod --version 0.38.2 我的播客文件: platfo
我在项目中使用cocoapods安装alamofire,它在模拟器中运行良好。当我想在 iphone 6s(ios 13.3.1) 上运行我的应用程序时,它崩溃并显示错误消息。我的 Xcode 版本是
如何取消 Alamofire 共享管理器中的所有请求? 这是我的功能: class func cancelAllRequests() { Alamofire.Manager.sharedIns
我想有多个适配器到同一个 SessionManager,这可能吗? 我的用例是: 从适配器设置默认 header 如果是 basic_auth:添加 basic_auth_adapter 如果是tok
调用 Alamofireobject 映射器的正确方法吗? 有人对我的问题提出建议吗? 最佳答案 func postRequestSample() { let
我是 IOS 的新手,这是我的第一个项目,我想在我的项目中使用 Alamofire 库 我按照所有步骤使用 Cocoapods 安装库,一切都应该正常工作,但我收到这个错误“No这样的模块'Alamo
我是 Swift 的新手,来自 Alamorefire Referencee , 你可以做以下的请求 Alamofire.request(.GET, "http://httpbin.org/get")
默认情况下,Alamofire 发送一个包含 gzip 的 Accept-Encoding header 。我如何告诉它停止这样做?我确实接受 gzip,我很高兴 Alamofire 为我解析它,但是
AFImage 的新功能。我不确定这是否是获取图像并将其缓存的正确方法。似乎每次运行时它都没有访问服务器,但我不确定它是否被缓存了?我走运了?看来我在下面使用的语法也过时了...... 任何评论表示赞
我检查了新的 Alamofire 安装步骤。 由于我需要针对 iOS 7.0,我想知道是否导入 Alamofire.swift是否足以让它工作? 为什么文档声明将函数包裹在 Struct Alamof
在 Alamofire 5 Beta 中,SessionManager已被 Session 取代. 我想知道现在分配 RequestAdapter 的过程是什么,因为这是一个 var在 Alamofi
任何人都可以提出一些关于如何使用 header 扩展 alamofire 的建议,例如需要在发送之前设置的 Content-MD5? 最佳答案 这是一个有点老的问题,但我遇到了同样的问题,我使用以下代
有没有人看到用指纹而不是公钥来固定 Alamofire 的方法? 对不起,如果这已经得到回答,我还没有在任何地方看到它。 谢谢 最佳答案 这最终变得非常简单。下面的代码可能并不完美,我的真实代码正在做
我想运行一个 Alamofire 请求,该请求使用先前 Alamofire 请求的结果作为参数。为了简单起见: //Code1 Alamofire.request("URL", met
当我尝试在应用程序中的 Xcode 中运行我的 iOS 应用程序时: dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire
我想运行一个使用先前 Alamofire 请求的结果作为参数的 Alamofire 请求。为简单起见: //Code1 Alamofire.request("URL", method:
更新:我解决了这个问题。请在下面查看我的回答(在问题和评论下方)。 这个问题被标记为重复,但它是不同的,因为它是一个全新的错误,我无法通过任何搜索找到它。 我尝试将 Alamofire 安装到我的 X
我想先 POST 到一个网站,然后 GET 另一个网站获取数据。 并更改 POST 中的 key ,并在 for 循环中继续这样做 5 次以获得不同的数据。 但是,程序总是先运行 POST 5 次,然
我正在使用 Alamofire 5(测试版 1)为 WooCommerce 编写 API 客户端,这将允许我获取订单、优惠券等以及创建它们。注意我使用的是新的 .responseDecodable功能
我是一名优秀的程序员,十分优秀!