【发布时间】:2016-03-02 13:33:18
【问题描述】:
我正在尝试向部署在 glass fish 服务器中的 Web 应用程序 servlet 发送请求,并使用 volley HTTP 库接收 json 响应。我设法从几个 servlet 获得响应,但是使用一个 servlet 我收到错误 BasicNetwork.performRequest: Unexpected response code 500 。我尝试切换 HTTP 方法,在 servlet 中将内容类型设置为“application/json”并实现getHeaders() 方法,并可能在 SO 中给出关于此问题的解决方案。但我还不能解决这个问题。
我的 Volley 请求如下:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.i("RESPONSE",response.toString());
//Type type = new TypeToken<CartItem>() {}.getType();
//CartItem item = new Gson().fromJson(response.toString(), type);
//cartItem = item;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("Volley_error", error.toString());
}
});
我在浏览器中的 json 响应如下所示:
{
"items": [{
"p_id": 1,
"p_name": "Multi Checked Shirt",
"p_price": 1234.0,
"p_size": "M",
"p_img": "uploads/products/Dorothy-Perkins-Multi-Checked-Shirt-4510-9254471-1-pdp_slider_l.jpg",
"p_qnty": 1
}, {
"p_id": 15,
"p_name": "Rust Solid Coloured Pant",
"p_price": 3500.0,
"p_size": "S",
"p_img": "uploads/products/Dorothy-Perkins-Rust-Solid-Coloured-Pant-971120977.jpg",
"p_qnty": 2
}],
"cart_total": 8234.0,
"total_items": 3
}
我的 Servlet 代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (request.getSession(false).getAttribute("cart") != null) {
ShoppingCart cart = (ShoppingCart) request.getSession(false).getAttribute("cart");
List<CartItem> cartItems = cart.getShoppingList();
List<Double> tot = new ArrayList<>();
CartModel model = new CartModel();
List<CartItemModel> cartItemModels = new ArrayList<>();
for (CartItem item : cartItems) {
CartItemModel itemModel = new CartItemModel(item.getProduct_id(),
cart.getNameofProduct(item.getProduct_id()),
cart.getPriceofProduct(item.getProduct_id(), item.getSize()),
item.getSize(),
path + cart.getImageofProduct(item.getProduct_id()),
item.getQnty());
cartItemModels.add(itemModel);
tot.add(cart.getPriceofProduct(item.getProduct_id(), item.getSize()) * item.getQnty());
}
model.setCart_total(cart.grandTotal(tot));
model.setTotal_items(cart.getTotalItemsOfTheCart());
model.setItems(cartItemModels);
Type type = new TypeToken<CartModel>() {
}.getType();
String element = new Gson().toJson(model, type);
response.getWriter().write(element);
}
}
我知道修改 Volley 库代码不是一个好主意,但我也尝试过。
if (statusCode < 200 || statusCode > 299) { throw new IOException();}
到
if (statusCode < 200 || statusCode > 505) {throw new IOException();}
然后我得到了错误:
JSONException: Value <!DOCTYPE of type java.lang cannot be converted to JSONObject
我是安卓新手。任何帮助都是不言而喻的。谢谢。
更新:
以下是我使用 HttpRequester 访问 url 时的方式:
【问题讨论】:
-
发出请求时 glassfish 错误日志中是否有异常?
-
不...服务器中没有任何错误....
-
服务器内部错误,所以服务器应该有错误
-
这就是问题......服务器中没有任何错误......一旦我运行servlet,它就会给我上面提到的json输出。
标签: android json android-volley internal-server-error