Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
目标C(iOS)到查询参数。零发行_Ios_Objective C_Rest_Jersey_Jersey 2.0 - Fatal编程技术网

目标C(iOS)到查询参数。零发行

目标C(iOS)到查询参数。零发行,ios,objective-c,rest,jersey,jersey-2.0,Ios,Objective C,Rest,Jersey,Jersey 2.0,我正在学习球衣,从一个问题到另一个问题步履蹒跚。我刚刚从Java客户端获得了服务(在这里有人提供了一些帮助之后)。服务类别如下: @Path("/user") public class UserService extends AbstractService { private static final NouLogger logger = NouLogger .getLogger(UserService.class); @Path("fbregister

我正在学习球衣,从一个问题到另一个问题步履蹒跚。我刚刚从Java客户端获得了服务(在这里有人提供了一些帮助之后)。服务类别如下:

@Path("/user")
public class UserService extends AbstractService {
    private static final NouLogger logger = NouLogger
            .getLogger(UserService.class);

    @Path("fbregister")
    @POST
    @Produces(MediaType.TEXT_HTML)
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    public String createNewFBUser(@FormParam("fbuserid") String userid,
            @FormParam("fbmailid") String emailId,
            @FormParam("fbfullname") String fullName,
            @FormParam("fbusertoken") String userToken,
            @Context HttpServletResponse servletResponse) throws IOException,
            DatabaseException {
        final String methodName = "createNewFBUser";

        User user = new User();
        user.setEmail(emailId);
        user.setName(fullName);
        user.setFacebookSecret(userToken);

        Session session = null;
        try {
            session = getSession();
        } catch (DatabaseException e) {
            final String message = "Error occurred while fetching session.";
            logger.error(methodName, message, e);
            e.printStackTrace();
        }

        UserDAO userDAO = DAOFactory.DEFAULT.buildUserDAO();
        Transaction txn = session.beginTransaction();
        userDAO.save(user);
        txn.commit();
        closeSession();

        return user.getId().toString();
    }

}
当我从Java客户端调用它时,它工作得很好。但是当我从iOS代码调用它时,我得到了所有参数的所有空值。iOS代码如下所示:

// To encode parameter.    
NSString *fb_userid = [user objectForKey:@"id"];
    NSString *fb_mailid = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)[user objectForKey:@"email"], NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8 ));
    NSString *fb_fullname = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)user.name, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8 ));
    NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];

    NSLog(@"user = %@", user);
    NSLog(@"fb_userid = %@", fb_userid);
    NSLog(@"fb_mailid = %@", fb_mailid);
    NSLog(@"fb_fullname = %@", fb_fullname);

// To send url Request.
    NSString *url1 =[NSString stringWithFormat:@"http://myip:8080/nou/rest/user/fbregister?fbuserid=%@&fbmailid=%@&fbfullname=%@&fbusertoken=%@", fb_userid, fb_mailid, fb_fullname, fbAccessToken];
    NSURL *url = [NSURL URLWithString:url1];
    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
    [theRequest setHTTPMethod:@"POST"];
    theConnection1 = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
知道为什么会这样吗?我把它放在远程调试上,我可以看到这个方法也被调用,我的DB条目被创建了,但是所有的空值都放在了里面。帮我解决这个问题

编辑:


我尝试只发送一个参数'id',但它也不起作用

在java代码中,您接受参数作为FormParam,但在发布时,您将其作为客户机代码查询字符串的一部分发送。因此,要么:

  • 将服务器代码中的FormParam更改为QueryParam
  • 或者更改客户端代码以将其作为post参数发送。以下是一个例子: