Android 代码不';服务器响应请求时无法工作

Android 代码不';服务器响应请求时无法工作,android,json,server,Android,Json,Server,最近我在学习服务器和android之间的请求和响应。 当服务器响应时,我尝试更新JSON文件,但失败了。更新代码不起作用 服务器代码是这样的:代码“JSONArray”不起作用,但我不知道为什么 public class AndroidServerServlet extends HttpServlet { private static final long serialVersionUID = 6792396567928634227L; public void doPost(

最近我在学习服务器和android之间的请求和响应。 当服务器响应时,我尝试更新
JSON
文件,但失败了。更新代码不起作用

服务器代码是这样的:代码“JSONArray”不起作用,但我不知道为什么

public class AndroidServerServlet extends HttpServlet {

    private static final long serialVersionUID = 6792396567928634227L;

    public void doPost(HttpServletRequest request, 
        HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/plain; charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        String username = request.getParameter("username");
        String newPassword = request.getParameter("newpassword");
        PrintWriter printWriter = response.getWriter();
        printWriter.print("hello android, password changed");
        printWriter.flush();
        printWriter.close();
        System.out.println(username+"\n"+newPassword);
        ChangePassword(username , newPassword);
        }
        private void ChangePassword(String username , String password){
            try {
                InputStream in = AndroidServerServlet.class
                    .getClassLoader().getResourceAsStream("/1.json");

                Scanner scanner = new Scanner(in, "UTF-8");  //InputStream → String
                String jsonData = scanner.useDelimiter("\\A").next();
                System.out.println(jsonData);
                scanner.close();
                JSONArray jsonArray = new JSONArray(jsonData);
                for(int i = 0;i < jsonArray.length(); i++){
                    JSONObject object = jsonArray.getJSONObject(i);
                    if(username.equals(object.getString("username")))
                        object.put("password",password);
                }
                System.out.println(jsonData);
                in.close();
            }catch (Exception e){
                System.out.print("Exception\n");
                }
            }
        }
json文件如下所示:

[{"username":"test1","password":"password1"},
{"username":"test2","password":"password2"},
{"username":"test3","password":"password3"}]
当我调试服务器代码时,我发现了一个错误:java.long.NoClassDefFoundError:org/json/JSONArray。但是我已经在项目中添加了这个jar,为什么会出现错误

顺便说一句:我使用IntellijIDEA+MAVEN+Tomcat来构建我的服务器

错误报告:

 java.lang.NoClassDefFoundError: org/json/JSONArray
at AndroidServerServlet.ChangePassword(AndroidServerServlet.java:41)
at AndroidServerServlet.doPost(AndroidServerServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)

我试图删除我添加的jar,但错误的报告仍然与top相同,证明我没有添加jar,但如何添加它?

我可以建议使用HttpUrlConnection而不是ServletRequest/Response、Scanner等

请检查此链接:


您可以在发布内容部分找到一个示例。

建议使用
改装
/
gson
,因为它的学习曲线足够小,使用起来会更轻松!您的web服务是否正常工作?实际上,您并没有向服务器发送正确的请求格式,您应该以json格式发送,而您是以请求参数格式发送。
 java.lang.NoClassDefFoundError: org/json/JSONArray
at AndroidServerServlet.ChangePassword(AndroidServerServlet.java:41)
at AndroidServerServlet.doPost(AndroidServerServlet.java:31)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)