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

來源:互聯網
上載者:User

標籤:odi   FQ   需要   eth   ons   init   刪除   nbsp   requests   

先說下我的問題

後台讓我這邊把請求的參數弄成一個實體轉化成 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串過去 前面多了個等號

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.