java - 将 JSON 数据从 iOS 发布到 java Web 服务

标签 java ios objective-c json afnetworking-2

我正在尝试从 iOS 应用程序将简单文本或名称作为 json 发送到我的 java web 服务,但不幸的是没有运气。这是我的 iOS POST 代码如下:

- (IBAction)cmdRegister:(id)sender {    
    AFSecurityPolicy *policy = [[AFSecurityPolicy alloc] init];
    [policy setAllowInvalidCertificates:YES];

    AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
    [operationManager setSecurityPolicy:policy];
    operationManager.requestSerializer = [AFJSONRequestSerializer serializer];
    operationManager.responseSerializer = [AFJSONResponseSerializer serializer];

    [operationManager POST:@"http://localhost:8080/com.webservice/rest/status/member/"
                parameters:@{@"name":@"john"}
                success:^(AFHTTPRequestOperation *operation, id responseObject) {
                       NSLog(@"JSON: %@", [responseObject description]);
                   }
                   failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                       NSLog(@"Error: %@", [error description]);
                   }
     ];     
}

这是我的 java web 服务方法:

@POST
@Path("/member/{name}")
@Consumes(MediaType.APPLICATION_JSON)
public Response addNewCustomer(@PathParam("name") String name) throws Exception {
  String returnString=null;
  MemberDAO dao = new MemberDAO();
  try{
      ObjectMapper mapper = new ObjectMapper();  
      Customer customer =mapper.readValue(name, Customer.class);

      //add to database the passed in params
      int returnCode =dao.insertMembers(name);

      //return the success or failure
      if(returnCode ==200){
        returnString ="Member has been added";
      } else {
        return Response.status(500).entity("Unable to process member    registration").build();
      }

  } catch(Exception ex) {
    ex.printStackTrace();
  }

  return Response.ok(returnString).build();
}

运行它没有错误,也没有数据库更新。我搜索并发现了类似的帖子,但没有线索,请帮忙。

我不确定我是否做错了什么。

非常感谢任何帮助。

最佳答案

我可以在 iOS 部分为您提供帮助。但我不知道你编写的java服务器(我认为使用JBoss)是否正确。

您向我展示代码并尝试此代码(iOS):

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *strURL = @"http://YOUR_IP:YOUR_PORT/YOUR_PATH/../../..";

    AFHTTPRequestOperationManager *manager     = [AFHTTPRequestOperationManager manager];
    AFJSONRequestSerializer *serializerRequest = [AFJSONRequestSerializer serializer];
    [serializerRequest setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

    AFJSONResponseSerializer *serializerResponse = [AFJSONResponseSerializer serializer];
    serializerResponse.readingOptions = NSJSONReadingAllowFragments;
    serializerResponse.acceptableContentTypes = [NSSet setWithObject:@"application/json"];

    manager.requestSerializer = serializerRequest;
    manager.responseSerializer = serializerResponse;

    UIImage *image = [UIImage imageNamed:@"SIMPLE_IMAGE.png"];
    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

    NSDictionary *parameters = @{@"name":@"Jhon"};
    [manager POST:strURL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFormData:imageData name:@"photo"];
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        strResultResponse = operation.responseString;
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        strResultResponse = operation.responseString;
    }];
}

您发送到服务器的代码,参数字符串和nsdata(图像)。您调整代码并尝试运行。 如果没有太大帮助的话我很抱歉。祝你好运。

关于java - 将 JSON 数据从 iOS 发布到 java Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21571768/

相关文章:

ios - 无法让 GoogleMaps SDK 在 Xcode Test Target 上运行(在 App Target 上运行)

ios - GPUImage 在真实设备上得到不同的结果

java - 如何在 log4j2 的 SmtpAppender 中设置自定义主题

java - jruby on rails - 使用 star server (rails s) 命令时出错

java - 如何移动 SD 卡中的 Realm 文件?

objective-c - 前向类 self 声明的目的?

iphone - 以编程方式禁用水平滚动到 UITextView

java - 如何将编号列表添加到我的素数应用程序,以及如何将 2 作为素数包含在内

ios - 如何在 facebook ios sdk 中处理 session

ios - 将 Swift 数组以外的其他内容用于传递给 OpenGL 缓冲区的可变固定大小线程安全数据