【发布时间】:2015-12-22 13:08:45
【问题描述】:
我正在尝试将一串文本作为 response 的一部分从 Jersey 网络服务发送到 Android 应用程序。
这是 web 服务接收请求并返回响应的方式:
控制器
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/retrieve/some/text")
@POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response retrieveSomeText(@FormParam("email") String email){
User user = new User();
user.setEmail(email);
return new UserService(user).retrieveSomeText();
}
服务
import javax.ws.rs.core.Response;
public Response retrieveSomeText() {
Response response = Response.status(200).entity("some text to send").build();
return response;
}
Android 应用使用 `HttpURLConnection: 发送请求:
public String retrieveSomeText(String email, String method){
String securityQuestion = "";
try {
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setReadTimeout(10000);
con.setConnectTimeout(15000);
con.setRequestMethod(method);
con.setDoInput(true);
con.setDoOutput(true);
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("email", email));
OutputStream os = con.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params));
writer.flush();
writer.close();
os.close();
con.connect();
securityQuestion = con.getResponseMessage();
} catch (IOException e) {
e.printStackTrace();
}
return securityQuestion;
}
响应消息是“已创建”。如何获取作为 Web 服务响应的一部分发送的文本字符串?
【问题讨论】:
-
阅读
getResponseMessage()的 javadoc。这不是你想的那样。你要的是输入流,那你需要自己提取数据,InputStream in = con.getInputStream() -
谢谢,欢迎回答。
标签: java android web-services jersey httpurlconnection