gpt4 book ai didi

ios - Objective C (iOS) 到 Jersey 查询参数。空问题

转载 作者:行者123 更新时间:2023-11-29 02:41:18 25 4
gpt4 key购买 nike

我正在学习 Jersey 并且从一个问题到另一个问题跌跌撞撞。我刚刚从 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];

知道为什么会这样吗?我把它放在远程调试中,我也可以看到正在调用的方法,我的数据库条目已创建但所有空值都放入其中。帮我解决这个问题。

编辑:

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

最佳答案

在您的 Java 代码中,您接受参数作为 FormParam,但在发布时您将其作为来自客户端代码的查询字符串的一部分发送。所以要么:

  1. 将服务器代码中的FormParam改为QueryParam
  2. 或更改客户端代码以将其作为帖子参数发送。这是一个例子: How to simulate HTTP form (POST) submit on iOS

关于ios - Objective C (iOS) 到 Jersey 查询参数。空问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com