iOS客户端 与JAVA 后台http通信

ios 客户端和java 后台数据交互时一些注意点吧 设置的请求头信息,以及接收体可接受的类型,长度

// manager  

    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];

   

    // 设置请求头信息,不设置可能会出现数据交互失败

    AFHTTPRequestSerializer * requestSer = [AFHTTPRequestSerializer serializer];

    [requestSer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    [manager setRequestSerializer:requestSer];


    //设置返回体信息,eg:设置可接收的ContentType(如果不能确定,就置空 nil

    // 不设置可能会出现 3840(JSON text did not start with array or object and option to allow fragments not set.)

    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]] ;

    manager.responseSerializer.acceptableContentTypes = nil;

//    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];

    

    // 发起请求

    [manager POST:path parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        if ([responseObject isKindOfClass:[NSData class]]) {

            NSString * res = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

            NSLog(@"====%@", res);

            complete(responseObject);

        }

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"error.code = %ld userinfo = %@", (long)error.code, error.userInfo);

        NSLog(@"====%@-- %lld -- %@", task.response.MIMEType,task.response.expectedContentLength,task.response.textEncodingName);

        [task cancel];

    }];



/*

出现 -1016

     

     在进行网络请求时出现-1016 是因为只支持

     text/jsonapplication/jsontext/javascript

     你可以添加text/html   如果不能确定,就置空 nil

     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json",nil];

     

     出现 3840

     

     Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" 

     (JSON text did not start with array or object and option to allow fragments not set.)

     没有设置requestSerializer 或者  responseSerializer

     manager.requestSerializer = [AFHTTPRequestSerializer serializer];

     manager.responseSerializer = [AFHTTPResponseSerializer serializer];


    1xx - 信息提示

    2xx - 成功

    3xx - 重定向

    4xx - 客户端错误*

    5xx - 服务器端错误

     */

Java 部分,前提是其他环境正常运行的情况下

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

System.out.println("APP的请求到这里了");

// response.sendError(1111); // 这是可以发送到客户端的 一般是有error

response.setCharacterEncoding("UTF-8");

// response.setContentLength(1000000);

response.setContentType("application/json; charset=utf-8");

//这是测试,模拟的json 数据,实际开发需要用到转json

String jsonStr = "{\"name\":\"fly\",\"type\":\"虫子\"}";

  PrintWriter out = null;

try {

    out = response.getWriter();

    out.write(jsonStr);

} catch (IOException e) {

    e.printStackTrace();

} finally {

    if (out != null)

        out.close();

}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值