IOS 使用 POST、GET 提交 JSON 數據到服務器

最近被安排了一項在 IOS 下 POS T數據的任務,在 Google 的幫助下總算是作出來了。網上的教程不全、亂、缺乏一個全方位適合初級開發者的教程。ios

閱讀本教程你須要:

  • 引用開源庫 ASIHTTPRequest(負責網絡通訊)、JSONKit(負責封裝和解析JSON數據)
  • 管理開源庫則須要工具 cocoapods(配置 ruby 和 gem),這是安裝教程

好的,如今假設裏上述工具都已經配置好了

  • 新建一個工程,我以 Demo 爲例 /Users/Demo
  • 在命令終端中進入 Demo 目錄
  • 用 vim 命令新建一個文件 Podfilegit

    輸入命令 vim Podfilegithub

    按下 i 鍵,進入輸入模式
    內容爲:json

    platform :ios
        pod 'ASIHTTPRequest'

    按下 esc 進入命令模式,連按兩次大寫的 Z 保存並退出 vimvim

  • 輸入命令 pod install 等待 出現xcode

    [!] From now on use Demo.xcworkspace.ruby

    在 finder 中打開 xcworkspace 來開啓工程(進行此操做最好先把 Xcode 關閉,否則會看到「xxx 已經在xcode中打開的提示」)網絡

  • 把 github 上的 JSONKit 搞下來app

    git clone https://github.com/johnezang/JSONKit.git
  • 導入頭文件工具

    #import "JSONKit.h"
    #import <ASIHTTPRequest/ASIHTTPRequest.h>

在這裏須要處理兩個 bug

  • JSONKit 不支持 arc 模式,因此在 Build Phases 中把 JSONKit.m Compiler Flags 填入「-fno-objc-arc」
  • 不支持古老的 isa,因此你要這樣作

    Include <objc/runtime.h>.

    Replace everything like array->isa =_JKArrayClass; with object_setClass(array, _JKArrayClass)

    And everything like class = array.isa with class = object_getClass(array)

好的,如今開始寫代碼了

假設咱們要上傳的 JSON 格式是這樣的:

{"email":"chenyu380@gmail.com","password":"FxxkYourAss"}

一個登陸方法

-(NSDictionary*)Login:(NSString *)email password:(NSString *)password
  {
  NSMutableDictionary *resultsDictionary;// 返回的 JSON 數據
  NSDictionary *userDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:password, @"password",email,@"email",nil];
  if ([NSJSONSerialization isValidJSONObject:userDictionary])
  {

    NSError *error;

    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:userDictionary options:NSJSONWritingPrettyPrinted error: &error];
    NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
    NSURL *url = [NSURL URLWithString:@"http://seanchense.com/login"];

    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request addRequestHeader:@"Content-Type" value:@"application/json; charset=utf-8"];
    [request addRequestHeader:@"Accept" value:@"application/json"];

    [request setRequestMethod:@"POST"];
    [request setPostBody:tempJsonData];
    [request startSynchronous];
    NSError *error1 = [request error];
    if (!error1)
    {
        NSString *response = [request responseString];
        NSLog(@"Test:%@",response);
        NSData* jsonData = [response dataUsingEncoding:NSUTF8StringEncoding];

    }
  }

  return resultsDictionary;
  }

好的如今完成了

相關文章
相關標籤/搜索