我正在尝试从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();
}
运行此操作,因为没有错误,也没有数据库更新。我搜索过并发现了类似的帖子,但没有任何线索请帮助。
我不确定我做错了什么。
非常感谢任何帮助。
答案 0 :(得分:0)
我可以在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(图像)。你适应你的代码并尝试运行。 对不起,如果没有多大帮助的话。祝你好运。
答案 1 :(得分:0)
AFHTTPRequestOperationManager * operationmanager = [AFHTTPRequestOperationManager manager];
AFJSONRequestSerializer *serializerRequest = [AFJSONRequestSerializer serializer];
[serializerRequest setStringEncoding:NSUTF8StringEncoding];
operationmanager.requestSerializer = serializerRequest;
operationmanager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"text/html", nil];
[operationmanager POST:getCategoryPath parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];