servlet-安卓与Servlet交互,空指针

问题描述

安卓与Servlet交互,空指针

客户端关键源码如下:
AsyncHttpClient add=new AsyncHttpClient();
add.addHeader("charset", HTTP.UTF_8);
add.addHeader("Content-Type", "text/plain");
price=pri.getText().toString();
RequestParams params=new RequestParams();
RequestParams picparms=new RequestParams();

        //截取图片名称
        String upic=realPath.substring(realPath.lastIndexOf("/")+1, realPath.length());
        File pic=new File(realPath);
        System.out.println(upic);
        params.add("type", "mobile");
        params.add("model", model);
        params.add("brand", brand);
        params.add("price", "1200");
        params.add("picPath", upic);
        //图片上传

        try {
            picparms.put("pic", new PhotoUpload().Upload(realPath));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            System.out.println(">>>>>>>>>>图片大小为:"+pic.length());

        System.out.println("基本信息:"+params.toString());
        add.get(URL, params, new AsyncHttpResponseHandler() {

            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                // TODO Auto-generated method stub
                System.out.println("服务器连接成功");
                if(arg0==200)
                {
                    boolean b = Boolean.valueOf(new String(arg2));
                    if(b)
                    {
                        Toast.makeText(UpdateCom.this, "图片上传成功", Toast.LENGTH_SHORT).show();
                    }else
                    {
                        Toast.makeText(UpdateCom.this, "图片上传失败", Toast.LENGTH_SHORT).show();
                    }
                }
            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                // TODO Auto-generated method stub
                System.out.println("服务器连接失败");
            }
        });
        add.post(URL, picparms, new AsyncHttpResponseHandler() {

            @Override
            public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
                // TODO Auto-generated method stub
                System.out.println("服务器连接成功");
                if(arg0==200)
                {
                    boolean b = Boolean.valueOf(new String(arg2));
                    if(b)
                    {
                        Toast.makeText(UpdateCom.this, "基本信息上传成功", Toast.LENGTH_SHORT).show();
                    }else
                    {
                        Toast.makeText(UpdateCom.this, "基本信息上传失败", Toast.LENGTH_SHORT).show();
                    }

                }
            }

            @Override
            public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
                // TODO Auto-generated method stub
                System.out.println("服务器连接失败");
            }
            //显示上传进度
            public void onProgress(int bytesWritten, int totalSize) {
                    // TODO Auto-generated method stub
                    super.onProgress(bytesWritten, totalSize);
                    int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
                    // 上传进度显示
                    progress.setProgress(count);
                    Log.e("上传 Progress>>>>>", bytesWritten + " / " + totalSize);
                }
        });

        break;
    default:
        break;
    }
}
为什么有post和get呢,就是楼主要问的,应为post传上去,更本就拿不出来,而get不能传图片等大文件;所以就有了两个parms,对了,我在这里用到了AsyncHttpClient;

服务器关键代码为:
package package_for_ordinary_person;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.RequestContext;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;

import com.beans.CompetGoods;
import com.dao_for_interface.CompGoodsDao;

/**

  • Servlet implementation class AddComproduct
    */
    @WebServlet("/AddComproduct")
    public class AddComproduct extends HttpServlet {

    boolean flag;
    private static final long serialVersionUID = 1L;
    CompGoodsDao cgd = new CompGoodsDao();
    CompetGoods cgoods;
    java.sql.Date currentDate = new java.sql.Date(System.currentTimeMillis());
    public String brand,model,picPath;
    /**

    • @see HttpServlet#HttpServlet()
      */
      public AddComproduct() {
      super();
      // TODO Auto-generated constructor stub
      }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    •  response)
      

      */
      @SuppressWarnings("resource")
      protected void doGet(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub

      String type = request.getParameter("type");
      brand = request.getParameter("brand");
      model = request.getParameter("model");
      String price = request.getParameter("price");
      picPath = request.getParameter("picPath");
      System.out.println(type + brand + model + price+picPath);
      cgoods = new CompetGoods();
      cgoods.setType(type);
      cgoods.setBrand(brand);
      cgoods.setModel(model);
      cgoods.setCprice(price);
      cgoods.setUploadDate(currentDate);
      if (cgd.upload(cgoods)) {
      flag = true;
      } else {
      flag = false;
      }

      response.setContentType("text/plain,charset=UTF-8");
      PrintWriter out = response.getWriter();
      out.print(flag);
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    •  response)
      

      */
      protected void doPost(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      cgoods=new CompetGoods();
      System.out.println(">>>>>" + request.getContentLength());
      InputStream is = request.getInputStream();
      // String picdate=request.getParameter("pic");
      // System.out.println(">>>>>" + picdate.length());
      File file=new File("//usr//local//ImageFromClient//"+picPath);
      if (!file.exists()) {
      try {
      System.out.println("文件不存在,正在创建.路径为" + file);
      file.createNewFile();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      FileOutputStream fos1 = new FileOutputStream(file);
      // fos1.write(new sun.misc.BASE64Decoder().decodeBuffer(is));
      int i = 0;
      while ((i = is.read()) != -1) {
      fos1.write(i);
      }
      fos1.close();
      is.close();

      // 图片保存并入库
      /*FileOutputStream fos = null;
      File file = new File("//usr//local//ImageFromClient//" + picPath);
      if (!file.exists()) {
      try {
      System.out.println("文件不存在,正在创建.路径为" + file);
      file.createNewFile();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      fos = new FileOutputStream(file);*/
      /*

      • try { //写入的是字节流 //通过解码之后直接生成图片 //picPath存储的是图片文件字节 fos.write(new
      • sun.misc.BASE64Decoder().decodeBuffer(picPath));
      • System.out.println("成功写入" + file); } catch (IOException e) { // TODO
      • Auto-generated catch block e.printStackTrace(); }
        */
        cgoods.setBrand(brand);
        cgoods.setModel(model);
        cgoods.setCpicPath(file.toString());
        if (cgd.updatecom(cgoods)) {
        flag = true;
        } else {
        flag = false;
        }

      response.setContentType("text/plain,charset=UTF-8");
      PrintWriter out = response.getWriter();
      out.print(flag);
      }

}
另外补充,post方法的request是可以打印出来大小的,就是取不出来.

解决方案

异常栈怎么没贴出来?

时间: 2024-08-28 15:55:05

servlet-安卓与Servlet交互,空指针的相关文章

Servlet.service() for servlet jsp threw exception

问题描述 严重: Servlet.service() for servlet jsp threw exceptionorg.apache.jasper.JasperException: Unable to compile class for JSP:An error occurred at line: 23 in the generated java fileThe method getJspApplicationContext(ServletContext) is undefined for

Servlet.service() for servlet action threw

问题描述 Servlet.service() for servlet action threw getConnection error: javax.naming.NameNotFoundException: Name exam is not bound in this Context 2016-5-18 21:17:35 org.apache.struts.action.RequestProcessor processException 警告: Unhandled Exception thro

javaweb-jsp页面调用Servlet后进入Servlet页面空白不跳转了

问题描述 jsp页面调用Servlet后进入Servlet页面空白不跳转了 各位大大,小弟正在用java做毕业设计,遇到一个问题,就是想实现获取页面的学生姓名sname和学号sno,然后到数据库中执行查询,将这个学生的成绩从数据库中输出到新的页面.可是,问题来了:在查询页面点击提交按钮后,页面跳转到ChengjiServlet2页面,web浏览器就一片空白,在ChengjiServlet2页面的sendRedirect也没了作用...希望各位大大们看在我操心做毕业设计的份儿上帮帮我吧,说白了就是

iframe接受中文乱码-最近在做一个导出功能 使用iframe 去请求servlet 在接受servlet返回信息时 乱码

问题描述 最近在做一个导出功能 使用iframe 去请求servlet 在接受servlet返回信息时 乱码 最近在做一个导出功能 使用iframe去请求servlet ,在接受servlet返回信息时 乱码 请教各位大神 如何解决 如何解决,各位大神 小弟感激不尽 解决方案 返回数据的时候进行编码,之后在返回.不知道你是怎么返回的 解决方案二: 下面这样试试 response.setCharEncoding("UTF-8");//这个地方是手写的代码.你自己参照改一下 PrintWr

安卓和h5的交互-安卓和h5 交互怎么去除h5 5界面的头部

问题描述 安卓和h5 交互怎么去除h5 5界面的头部 安卓和 h5 交互的时候如何去除h5 界面的头部啊,在线等,拜托大神们了???? 解决方案 不知道你说的头部是什么东西,应该是一个div之类的,修改样式display:none把它隐藏掉. 解决方案二: 你可以去掉HTML5代码里 标签 解决方案三: <head>,请自动把全角字符看成半角

关于web.xml中servlet的配置servlet和servlet-map标签的使用

  <servlet>    <description>This is the description of my J2EE component</description>    <display-name>This is the display name of my J2EE component</display-name>    <servlet-name>ServletTest</servlet-name>    &

【JAVA SERVLET 开发系列之二】创建WEBAPP详细步骤,通过SERVLET实现HTTP简单交互

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/java-servlet/853.html 创建一个webApp详细步骤如下:       1.   在我们的tomcat目录下的webapps 下创建一个自定义目录,作为我们webapp的整个项目目录:这里Himi命名为MyWebApp:         2.然后在 MyWebApp下继续创建一个"WEB-INF"文件夹(必须有)

严重: Servlet.service() for servlet jsp threw exception是因为什么啊?

问题描述 011-2-2521:46:06org.apache.catalina.core.StandardWrapperValveinvoke严重:Servlet.service()forservletjspthrewexceptionjava.lang.NullPointerExceptionatorg.apache.jsp.login_jsp._jspDestroy(login_jsp.java:40)atorg.apache.jasper.runtime.HttpJspBase.dest

servlet debug 断点-Servlet里设置断点后用debug怎么进去不断点啊 急救哪

问题描述 Servlet里设置断点后用debug怎么进去不断点啊 急救哪 我用httppost和httpclient向servlet发送请求,在servlet里加了断点 可是debug调试进不去 - - 解决方案 你debug启动,看看你打的断点有没有一个小小的对号√,有的话就说明走这个断点了,没有说明没走这个断点 解决方案二: 遇到这种问题可能会有一下几种情况: 1>没有指定Debug工程.点击Link Souce指定到对应的工程即可. 2>class文件与代码不同步.清空工程.重新编译工程