后台人员提供了一个网络请求接口,接口文档如下:
使用字典将参数传递过来给后台,移动端提供的参数
isAttention
是BOOL
类型,要转换成后台所需要的int
类型;因为字典之中键值只能是对象类型,以往都是将
int
类型包装成NSNumber
类型放在字典里进行传递,请求准确无误。
方式一 : {@"isAttention":@(isAttention)}
方式二 : [NSNumber numberWithBool:attention]
方式三 : attention ? @1 : @0
不巧的是,今天使用上述两种方式都报错--400.
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x604000c51100 {Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={NSLocalizedDescription=Request failed: bad request (400), NSErrorFailingURLKey=http://test.******.com/jsb_webserver/attention/user, com.alamofire.serialization.response.error.data = <........>, com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x60400082f140> { URL: http://test.******.com/jsb_webserver/attention/user } { Status Code: 400, Headers { Connection = [ close ], Content-Language = [ en ], Content-Type = [ text/html;charset=utf-8 ], Content-Length = [ 1003 ], Date = [ Mon, 03 Sep 2018 06:34:01 GMT ] } }}}}
最终使用第三种方式包装BOOL
类型参数,请求成功的!!!
但是本人还是有些不解,前两种写法和第三种有什么本质上的区别,
求大神不吝赐教!!!
网友评论