我将数据从我的iPhone发送到服务器。代码如下:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:url]];
[request setShouldCompressRequestBody:YES]; // gzip compression
[request setTimeOutSeconds:60];
[request setPostValue:emailString forKey:@"email"];
[request setPostValue:jsonStr forKey:@"jsonstring"];
[request setPostValue:pwd forKey:@"password"];
[request setDelegate:self];
[request startAsynchronous];
我试图搜索我如何在服务器中接收此数据但找不到任何帮助。我会使用req.getParameter()接收它吗?如果是,则参数名称是什么,然后如何解压缩并使用email,jsonstring,password参数。提前谢谢。
答案 0 :(得分:1)
在标准J2EE环境中执行此操作的最简单方法(IMO)是使用GZIP压缩过滤器。你可以在this question中找到一些例子(尽管这个只是关于我能看到的响应过滤器)或here(我相信这个也可以请求解压缩你问的)
然后使用<filter>
中的web.xml
元素将此类过滤器插入到您的webapp中(有关如何使用servlet过滤器的示例,请参阅here),从而避免任何硬编码来自您的webapp代码的依赖关系。
答案 1 :(得分:0)
这里所需要的只是一些像Tomcat这样的Servlet容器(我不认为你需要一个完整的Java EE环境,除非你的服务器应用程序更复杂,例如是分布式的,JSP / Servet子集似乎就足够了)。它本质上是一个服务器(通常是HTTP服务器和服务器,对于任何原始数据),JSP和Servlet执行请求处理。顺便说一句,Tomcat有一个内置的gzip压缩支持,它是可配置的。所以应该很容易。
然后你需要编写一个Servlet,它从你的HTTP请求中提取客户端iOS代码中提到的所有参数,然后构造并发送响应。 (关于servlet有很多文章,官方文档等)如何提取它们并不取决于你是否使用GZIP,解压缩应该先由服务器完成。
<强>更新强>
至于参数名称,我猜(我不是iOS开发人员)他们是你的代码中'setPostValue'消息之后的字符串,如
...
[请求setPostValue: emailString forKey:@“email”];
...
所以,他们目前正在
emailString
jsonStr
pwd
总结,阅读代码应该是这样的:
public abstract class MyServlet extends HttpServlet {
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String emailString = req.getParameter("emailString");
String jsonStr = req.getParameter("jsonStr");
String pwd = req.getParameter("pwd");
//...
}
}