1. 程式人生 > >ios 傳遞JSON串過去 前面多了個等號

ios 傳遞JSON串過去 前面多了個等號

OS 代碼 nsdata 過去 ati ted 方法 FN nco

先說下我的問題

後臺讓我這邊把請求的參數弄成一個實體轉化成 json 串放body裏傳給他,當然header也有設置,提前設置好了,

但是後來了解 所謂的把實體轉成json串的本質就是先把實體用runtime 轉化為字典 或者數組 然後用

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:model options:NSJSONWritingPrettyPrinted error:nil];

//

NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

上面兩行代碼解析轉換,得到的確實好的json串。

但是問題出現了,每次傳遞之前輸出log json串是沒問題的,但是到服務器那邊,json串前多了個等號,

=%3C7b0a2020%2022706173%2073776f72%206422203a%2020223132%2033343536%20222c0a20%2020227573%2065724e61%206d652220%203a202231%2033323431%2035383235%203233220a%207d%3E

後臺解析不了。

後來查找AFN底層 找到原因了

AFURLRequestSerialization.m 508行

query = AFQueryStringFromParameters(parameters); 能清晰的輸出 把我們的json 做了改變(為什麽會變)。

解決辦法

AFHTTPSessionManager 267行方法 裏加入

[request setHTTPBody:parameters]; (不知道為什麽會這樣),

但是到現在為止 還是沒通數據 又把前面的json串改成json流 也就是刪除 NSString *jsonStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

但是我用的是Ytknetwork 所以 我又改了

YTKNetworkAgent.m 167 行sessionTaskForRequest 進入響應的post (根據需要可以是get),也就是457行

dataTaskWithHTTPMethod方法裏加入

[request setHTTPBody:parameters];這行代碼

終於通了

ios 傳遞JSON串過去 前面多了個等號