精华内容
下载资源
问答
  • Unexpected token in JSON at position 0 眼熟的错误,可能以前当你发送一个HTTP请求的时候,都曾出现过这个错误提示或者相似的错误,那这个错误是由什么引起的呢 报错原因 这些错误发生在你向服务器发送请求的时候...
  • INTOUCH 2014 R2 SP1在win10 系统不能新建新型应用程序,出现(8000ffff)错误Could not perform operation -- unexpected exception. Unexpected failure (8000ffff) caught at line 779 in CreateGalaxy.cpp (in y:\...
  • python出现”IndentationError: unexpected indent”错误解决办法 Python是一种对缩进非常敏感的语言,最常见的情况是tab和空格的混用会导致错误,或者缩进不对 如下图中的代码: 以上代码中第一次运行可以正常...
  • Module parse failed: Unexpected token 问题描述 学习React出现的一个问题 从官网拿到的一个例子 class HelloMessage extends React.Component { render() { return ( Hello {this.props.name} ); } } ...
  • 控制台的提示:Uncaught SyntaxError: Unexpected token < 按照提示进入文件,再看如下图: 仔细看了看 index.html 文件,发现原本我的 JS 文件是放在 /src/utils 文件夹下的,但引入 /src 和 /static 的文件是...
  • GO beego 部署时出现Error:unexpected end of JSON input 文章目录GO beego 部署时出现Error:unexpected end of JSON input1、Note2、解决方法原理实现3、参考 beego Error: unexpected end of JSON input 1、Note...
  • 这里就整理一个代码编写调试问题,错误如下: Parse error: syntax error, unexpected $end in D:\xampp\htdocs\guestBook\guestBook.php on line 330 看看程序 330行,代码最后一行,这有什么错误?google搜,找到...
  • TypeError: Unexpected keyword argument passed to optimizer: learning_rate 3.问题定位:  先看报错代码:大概意思是, 传给优化器的learning_rate参数错误。 模型训练是在服务器Linux环境下进行的,之后在...
  • 主要介绍了JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法,结合实例形式分析了javascript提示此类异常的常见原因与相关解决方法,需要的朋友可以参考下
  • start.sh: line 17: syntax error near unexpected token `$'do\r'' 'tart.sh: line 17: ` do 原因 运行cat -v start.sh,如果内容结尾为是^M,这是因为你所处理的文件换行符是dos格式的”\r\n”,你可能在windows...
  • 主要介绍了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法,涉及针对字符串参数的处理方法,需要的朋友可以参考下
  • 主要介绍了vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token fi错误的问题,需要的朋友可以参考下
  • 主要介绍了python出现"IndentationError: unexpected indent"错误解决办法的相关资料,希望通过本文能解决遇到这样的问题,需要的朋友可以参考下
  • 主要介绍了Vue项目报错:Uncaught SyntaxError: Unexpected token <,在引入第三方依赖的 JS 文件时,遇到的一个问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了解决vue打包后刷新页面报错:Unexpected token <相关知识点,需要的朋友们参考下。
  • Spring注释配置:Unexpected exception parsing XML document from class path resource [beans-annotation.xml]-附件资源
  • 在PHP中根本不需要使用var声明的,但是当一个变量作为一个类的成员变量的时候,使用var还是没有问题的
  • 主要介绍了PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法,需要的朋友可以参考下
  • 解决了3.10.0Unexpected char 0x20 at 19 in header name: x-upyun-api-version
  • Vuejs报错error: Unexpected console statement (no-console) at src\... 解决办法
  • unexpected-web-源码

    2021-03-20 14:25:10
    部署或部署项目的基本功能--base-href = / unexpected-web /
  • 运行一个py脚本报错:IndentationError: unexpected indent,看了看代码缩进没有问题,上网查了下应该是Tab键与空格混用的原因。 打开编辑器设置显示空格,将空格用Tab代替,再次运行脚本,错误消失。 如何让编辑...

    运行一个py脚本报错:IndentationError: unexpected indent,看了看代码缩进没有问题,上网查了下应该是Tab键与空格混用的原因。

    打开编辑器设置显示空格,将空格用Tab代替,再次运行脚本,错误消失。

    如何让编辑器显示空格?

    我用的编辑器是sublime 3,点击首选项->设置用户-> 将"draw_white_space": "all", 放入配置中即可

    展开全文
  • 主要介绍了vc提示unexpected end of file found的原因分析,给出了几点常见错误原因的分析,需要的朋友可以参考下
  • 使用python3做练习,用eval语句将文本数据转化为列表时,报错SyntaxError: unexpected EOF while parsing 具体代码如下 datals= [ ] f= open("data.txt",encoding='utf-8') for line in f : line = line....

    使用python3做练习,用eval语句将文本数据转化为列表时,报错SyntaxError: unexpected EOF while parsing 具体代码如下

    datals= [ ]
    f= open("data.txt",encoding='utf-8')
    for line in f :
        line = line.replace("\n","")
        datals.append(list(map(eval,line.split(","))))
    f.close()
    

    在这里插入图片描述
    修改代码,加入if判断

    datals= [ ]
    f= open("data.txt",encoding='utf-8')
    for line in f :
        line = line.replace("\n","")
        if line!="":    # eval内参数为空时报错,需要加入if判断
            datals.append(list(map(eval,line.split(","))))
    f.close()
    

    运行后读出数据并没有报错

    data.txt如下
    在这里插入图片描述

    展开全文
  • VB dll(Unexpected error)

    2013-04-16 09:06:37
    To fixup vb unexpected error.
  • Unexpected EOF read on the socket

    千次阅读 2020-08-11 17:50:11
    最近负责的SpringBoot项目日志里面老是出现“Unexpected EOF read on the socket”的错误,但是测试时,测来测去又没发现什么问题,但是看到日志里面有错误日志又不知道原因,这个怎么能忍,所以花点时间好好看看。...

    最近负责的SpringBoot项目日志里面老是出现“Unexpected EOF read on the socket”的错误,但是测试时,测来测去又没发现什么问题,但是看到日志里面有错误日志又不知道原因,这个怎么能忍,所以花点时间好好看看。

    首先得出我的结论:在客户端上传请求体的期间,客户端关闭了网络连接,导致服务器端的输入流异常中断,最终导致Jackson反序列化出现异常。下面是具体的分析过程。 

    首先我们看看错误日志:

    11:00:13.792 [http-nio-9090-exec-1] ERROR com.app.component.ControllerExceptionHandler - JSON parse error: Unexpected EOF read on the socket; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected EOF read on the socket (through reference chain: com.app.entity.AppServiceEntity["installList"]->java.util.HashSet[2])
     org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected EOF read on the socket; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected EOF read on the socket (through reference chain: com.app.entity.AppServiceEntity["installList"]->java.util.HashSet[2])
    	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:243) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:225) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
    
    	

    错误日志的调用栈其实很长,这里只截取了一小部分。从日志里面我们可以看出,错误发生的阶段应该是在服务器把请求体里面的JSON字符串反序列化成JavaBean的过程中,错误产生的原因是这个Unexpected EOF read on the socket,既然有socket肯定就跟网络有关;这里的EOF又是什么呢,EOF就是End Of File的缩写,简单理解就是文件结束标志,Unexpected EOF read on the socket直译就是在socket中出现了不该出现的EOF,意思就是在不该结束的地方就结束了,字面意思是这样,但是实际上又是什么原因导致的呢。

    先百度了一下,很多帖子都说是请求超时导致的,延长服务器的连接超时时间就可以了,但是我感觉这个不科学,因为超时异常一般都是报什么SocketTimeoutException,而不是这里的Unexpected EOF,我也延长了服务器的连接超时时间,结果无济于事,说明这个说法是错误的,那导致这个问题的原因是什么呢?我初步的猜想是客户端在传输请求体的过程中,因为网络超时或者关闭,导致服务器接受到的JSON不全,进而导致JSON反序列化异常。接下来为了重现这个异常,需要写一个简单的发送HTTP请求的代码,代码如下:

    public class Main {
    
        public static void main(String[] args) throws Exception {
            try (Socket client = new Socket()) {
                InetSocketAddress inetSocketAddress = new InetSocketAddress("localhost", 9090);
                client.connect(inetSocketAddress, 1000);
    
                PrintWriter writer = new PrintWriter(client.getOutputStream());
    
                String body = "{\"appId\":\"com.promqueen\",\"channel\":\"VIVO\"," +
                        "\"language\":\"CN\",\"deviceType\":\"ANDR\"," +
                        "\"udid\":\"21312dfhdfh44sdasd\",\"landOrPort\":\"PORT\"," +
                        "\"installList\":[\"21312dfhdfh44sdasdd\",\"21312dfhdsd\"]}";
                int bodyLength = body.getBytes(StandardCharsets.UTF_8).length;
    
                String header = "POST /promote_app/accom/ad_info/v1 HTTP/1.1\n" +
                        "Host: localhost:9090\n" +
                        "Content-Type: application/json;charset=UTF-8\n" +
                        "Content-Length: " + bodyLength + "\n";
                //请求头
                writer.print(header);
                //空行
                writer.println();
                //请求体
                writer.print(body);
                writer.flush();
    
                BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                String line;
                do {
                    line = reader.readLine();
                    System.out.println(line);
                } while (!line.equals(""));
            }
        }
    }

    这个代码就是向服务器发送一个POST请求,并提交JSON字符串,正常情况下会打印出响应的响应头,如下:

    HTTP/1.1 200 
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Vary: Accept-Encoding
    Date: Tue, 11 Aug 2020 06:38:23 GMT

    响应的响应码是200,说明这个代码是正常的。我们怎么让它变得不正常呢,我最容易想到的情况就是在发送了一部分的JSON后,网络突然就阻塞或者直接断了,导致网络连接超时了,虽然我上面说了这个异常很可能不是超时导致的,我们好歹先试一试。我们把上面的发送JSON的代码改成这样:

                //先发送一部分JSON
                writer.print("{\"appId\":\"com.promqueen\",\"channel\":\"VIVO\"," +
                        "\"language\":\"CN\",\"deviceType\":\"ANDR\"," +
                        "\"udid\":\"21312dfhdfh44sdasd\",\"landOrPort\":\"PORT\"," +
                        "\"installList\":[\"21312dfhdfh44sdasdd\",\"21312dfhdsd\"");
                writer.flush();
    
                //模拟网络超时,在spring boot配置文件中设置超时时间为10s(server.connectionTimeout = 10000)
                Thread.sleep(15000);
    
                writer.print("]}");
                writer.flush();
    

    果然服务器报错了:

    15:40:51.727 [http-nio-9090-exec-1] ERROR com.app.component.ControllerExceptionHandler - JSON parse error: (was java.net.SocketTimeoutException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.net.SocketTimeoutException) (through reference chain: com.app.entity.AppServiceEntity["installList"]->java.util.HashSet[1])
     org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: (was java.net.SocketTimeoutException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.net.SocketTimeoutException) (through reference chain: com.app.entity.AppServiceEntity["installList"]->java.util.HashSet[1])
    	

    但是报的是SocketTimeoutException,不是Unexpected EOF,说明Unexpected EOF不是由于超时导致的,那它又是由于什么导致的呢,一时就没得头绪了,想不到还有什么其他的原因会导致问题的出现。

    我们先分析一下这个问题。在错误日志的调用栈里面,抛出异常的根源在这里:

     /**
         * Attempts to read some data into the input buffer.
         *
         * @return <code>true</code> if more data was added to the input buffer
         *         otherwise <code>false</code>
         */
        private boolean fill(boolean block) throws IOException {
    
            if (parsingHeader) {
                if (byteBuffer.limit() >= headerBufferSize) {
                    if (parsingRequestLine) {
                        // Avoid unknown protocol triggering an additional error
                        request.protocol().setString(Constants.HTTP_11);
                    }
                    throw new IllegalArgumentException(sm.getString("iib.requestheadertoolarge.error"));
                }
            } else {
                byteBuffer.limit(end).position(end);
            }
    
            byteBuffer.mark();
            if (byteBuffer.position() < byteBuffer.limit()) {
                byteBuffer.position(byteBuffer.limit());
            }
            byteBuffer.limit(byteBuffer.capacity());
            int nRead = wrapper.read(block, byteBuffer);
            byteBuffer.limit(byteBuffer.position()).reset();
            if (nRead > 0) {
                return true;
            } else if (nRead == -1) {
                throw new EOFException(sm.getString("iib.eof.error"));
            } else {
                return false;
            }
        }

    这个方法的全称是org.apache.coyote.http11.Http11InputBuffer.fill,如果nRead == -1 就会抛出EOFException。结合以前学过的IO流的知识,当从输入流读取数据时,返回的读取字节数如果是-1的话,对于文件IO就表示文件读完了,也就是到了"end of file";如果是一个网络IO就表示输入流被关闭了。再想想HTTP的知识,对于使用长连接的情况下,服务器通过网络输入流读取数据时,是通过请求头Content-Length来判断请求体是否被读取完的,意思就是服务器先会去解析请求头,通过Content-Length就会知道请求体数据量的大小,然后再从输入流当中读取相应字节数的数据作为这个请求的请求体。通过上面的代码我们可以分析得出在正常情况下这个nRead是不应该为-1的,就是还有数据可以读出来,也就是还没有达到Content-Length所指定的数据量,然后输入流就关闭了。所有可以猜测出原因可能是在客户端发送JSON的过程中,在数据还没传完的情况下,连接被关闭了。我们把代码改成这样再验证一下:

                //先发送一部分JSON
                writer.print("{\"appId\":\"com.promqueen\",\"channel\":\"VIVO\"," +
                        "\"language\":\"CN\",\"deviceType\":\"ANDR\"," +
                        "\"udid\":\"21312dfhdfh44sdasd\",\"landOrPort\":\"PORT\"," +
                        "\"installList\":[\"21312dfhdfh44sdasdd\",\"21312dfhdsd\"");
                writer.flush();
    
                //模拟网络超时,在spring boot配置文件中设置超时时间为10s(server.connectionTimeout = 10000)
                //Thread.sleep(15000);
    
                //关闭输出流
                writer.close();
    
                //输出流关闭后再发送数据其实是没有意义的,这个代码可以注释掉
                writer.print("]}");
                writer.flush();

    果然服务端抛出了Unexpected EOF read on the socket的异常信息,说明我们找到问题的原因了,就是客户端把连接给关闭了,然后服务器还没有读取到Content-Length所指定的数据量,输入流就关闭了,所以叫Unexpected EOF,就是在不该结束的时候结束了。我们还可以把代码稍微改改再来验证一下这个问题,我们把Content-Length改成先发送的部分JSON字符串的大小,看看服务器会报什么错。

    //后面发送的"]}"占用了两个字节
    int bodyLength = body.getBytes(StandardCharsets.UTF_8).length - 2;
    
    ·····
    
    //不关闭输出流
    //writer.close();
    16:51:46.866 [http-nio-9090-exec-7] ERROR com.app.component.ControllerExceptionHandler - JSON parse error: Unexpected end-of-input: expected close marker for Array (start marker at [Source: (PushbackInputStream); line: 1, column: 141])
     at [Source: (PushbackInputStream); line: 1, column: 353]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected end-of-input: expected close marker for Array (start marker at [Source: (PushbackInputStream); line: 1, column: 141])
    

     这时服务器抛出的异常没有再与socket相关的异常信息了,说明我们通过修改Content-Length骗过了服务器,让它觉得接受完了请求体,但是因为接受到的JSON是不完整的,所有反序列化时会显示JSON格式不正确。

    最后我们可以看出这个问题其实客户端的问题,这个接口是给app使用的,所以我觉得应该是app退出前台后,网络被关闭导致的。

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,782
精华内容 46,312
关键字:

unexpected