百度是这么回答的:文件结尾了还继续读文件,就导致这个错误抛出。本来EOF的数值就是-1,但是是一种用于错误标识的记号

解决方案 »

  1.   

    顶一个,我也遇到啦。android4.0就有的啊
      

  2.   

    这是ksoap2 jar包的bug问题。 请下载3.0 或者 3.1的版本。
      

  3.   

    private WebUtil() {
    } private static WebUtil bean = new WebUtil();
    private String requestUrl = "";
    private int requestTime = 0;
    private String method = Constant.REQUEST_GET;
    private String encoding = HTTP.UTF_8; /**
     * 构造方法
     * 
     * @param requestUrl
     *            请求的地址
     * @param requestTime
     *            请求时长
     * @param method
     *            请求方式
     * @param encoding
     *            编码格式
     */
    public WebUtil(String requestUrl, int requestTime, String method, String encoding) {
    this.requestUrl = requestUrl;
    this.requestTime = requestTime;
    this.method = method;
    this.encoding = encoding;
    } /**
     * 单例模式获得bean
     * 
     * @return WebUtil
     */
    public static WebUtil get() {
    return bean;
    } /**
     * 根据url获得页面源码, 调用web接口
     * 
     * @param params
     *            参数列表 post必备, 比如:"name=张三&age=18"
     * @param sessionInfo
     *            可以保持session, 默认不保持
     * @param isLine
     *            得到的源码是否换行, 默认false
     * @return String
     */
    public String request(String params, String sessionInfo, boolean isLine) throws Exception {
    Log.e(Constant.TAG_NAME, "调用web接口:" + requestUrl);
    encoding = (ToolUtil.get().isBlank(encoding) ? HTTP.UTF_8 : encoding);
    method = (ToolUtil.get().isBlank(method) ? Constant.REQUEST_GET : method.toUpperCase());
    String mathStr = "mathRandom=" + Math.random();
    if (method.equals(Constant.REQUEST_GET)) {
    requestUrl += (requestUrl.indexOf("?") != -1 ? "&" : "?") + mathStr;
    if (!ToolUtil.get().isBlank(params)) {
    requestUrl += "&" + params;
    }
    }
    HttpURLConnection conn = (HttpURLConnection) new URL(requestUrl).openConnection();
    if (!ToolUtil.get().isBlank(sessionInfo)) {
    conn.setRequestProperty("Cookie", sessionInfo);
    }
    conn.setRequestMethod(method);
    if (requestTime > 0) {
    conn.setConnectTimeout(isWifi() ? requestTime : requestTime * 3);
    conn.setReadTimeout(isWifi() ? requestTime : requestTime * 3);
    }
    if (method.equals(Constant.REQUEST_POST)) {
    conn.setDoOutput(true);
    OutputStream output = conn.getOutputStream();
    output.write((ToolUtil.get().isBlank(params) ? mathStr : params + "&" + mathStr).getBytes(encoding));
    output.flush();
    output.close();
    }
    String response = FileUtil.get().readFile(conn.getInputStream(), encoding, 1, isLine);
    conn.disconnect();
    return response;
    }