Java 将mysql数据从servlet发送到Android
我试图使用JSON将我的mysql数据从servlet发送到android应用程序,但它显示错误Java 将mysql数据从servlet发送到Android,java,android,json,servlets,Java,Android,Json,Servlets,我试图使用JSON将我的mysql数据从servlet发送到android应用程序,但它显示错误java.net.connectException连接超时 这是带有recylcer视图的android片段。 当数据为伪数据时,RecyclerView工作正常 public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle sav
java.net.connectException连接超时
这是带有recylcer视图的android片段。
当数据为伪数据时,RecyclerView工作正常
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_homefrag, container, false);
final Context context=v.getContext();
recyclerView= v.findViewById(R.id.recyler);
final List<UserRecycle> sample=new ArrayList<>();
final String JSON_URL = "http://10.0.2.2:8080/OnlineBookStore/Home";
RequestQueue requestQueue= Volley.newRequestQueue(context);
StringRequest stringRequest=new StringRequest(Request.Method.GET, JSON_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try{
JSONObject jsonObject=new JSONObject(response);
JSONArray bookArray=jsonObject.getJSONArray("BookData");
for(int i=0;i<bookArray.length();i++){
JSONObject bookobject=bookArray.getJSONObject(i);
UserRecycle books=new UserRecycle();
book_ids.add(bookobject.getString("id"));
books.b_name=bookobject.getString("bname");
books.b_author=bookobject.getString("bauthor");
books.b_price=bookobject.getString("bprice");
books.b_avail=bookobject.getString("bstock");
books.b_image=R.drawable.bbanim;
sample.add(books);
}
layoutManager=new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayout.VERTICAL));
recyclerView.setAdapter(new RecyclerAdapter(sample));
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(), "error "+error.getMessage(), Toast.LENGTH_LONG).show();
}
});
stringRequest.setRetryPolicy(new DefaultRetryPolicy( 50000, 5, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(stringRequest);
return v;
}
当我在网页上打印数据时,效果很好
我想问题在于在Servlet类或url中创建响应。
如果可以的话,请提供帮助。您有android中的
Request.Method.GET
和servlet中的processRequest
,我认为您需要将代码放入doGet
方法,因为您的客户端正在向服务器发送GET
请求。还有,现在我正在重置java.net.socketException连接。如果您在android中有Request.Method.GET
,而servlet在processRequest
中有代码,我认为您需要将代码放入doGet
方法,因为您的客户端正在向服务器发送GET
请求。还有,现在我要重置java.net.socketException连接
public class Home extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection con=Connect.connect();
try{
PrintWriter out=response.getWriter();
PreparedStatement pst=con.prepareStatement("select * from book order by b_id desc;");
ResultSet rst=pst.executeQuery();
JsonObject jsonResponse= new JsonObject();
JsonArray data = new JsonArray();
while(rst.next()){
JsonObject row=new JsonObject();
row.addProperty("id", rst.getString(1));
row.addProperty("bname", rst.getString(2));
row.addProperty("bauthor", rst.getString(3));
row.addProperty("bprice", rst.getString(4));
row.addProperty("bstock", rst.getString(5));
data.add(row);
}
jsonResponse.add("BookData", data);
out.print(jsonResponse);
}
catch(SQLException e){
}
}
}