Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分析媒体类型时出错';应用程序/json;编码=utf8,字符集=utf-8';_Java_Json_Rest_Encoding_Jersey - Fatal编程技术网

Java 分析媒体类型时出错';应用程序/json;编码=utf8,字符集=utf-8';

Java 分析媒体类型时出错';应用程序/json;编码=utf8,字符集=utf-8';,java,json,rest,encoding,jersey,Java,Json,Rest,Encoding,Jersey,我将DropWizard与jersey一起使用,创建一个从服务器接受JSON并将其映射到POJO的客户端。但是,我在调用客户机时遇到了这个错误 java.lang.IllegalArgumentException: Error parsing media type 'application/json;encoding=utf8, charset=utf-8' 我的代码如下: @Path("/something") @Produces(MediaType.APPLICATION_JSON) pu

我将DropWizard与jersey一起使用,创建一个从服务器接受JSON并将其映射到POJO的客户端。但是,我在调用客户机时遇到了这个错误

java.lang.IllegalArgumentException: Error parsing media type 'application/json;encoding=utf8, charset=utf-8'
我的代码如下:

@Path("/something")
@Produces(MediaType.APPLICATION_JSON)
public class SampleClient {
  final Client client;
  WebResource.Builder builder;

  public SampleClient (Client client) {
    this.client = client;
    this.builder = client.resource("http://localhost/mysample/service").type("application/json");
  }

  @GET
  public MyMapper getSomething() {
   MyMapper result = builder.accept("application/json").get(MyMapper.class);
   return result;
  }
}

我做错了什么?

您是否在客户机中生成该标题

根据
内容类型
标题必须具有以下格式:

Content-Type := type "/" subtype *[";" parameter] 
在哪里

因此,您可以将以下内容作为可解析的媒体类型:

Content-type: application/json; encoding=utf8; charset=utf8
使用分号而不是逗号。这并不意味着它是正确的,只是可以解析。尝试改用:

Content-type: application/json; charset=utf8

如果这是一个客户端错误,那么您可能需要配置一个
Accept
头(由于您没有发送任何有效负载,所以不需要内容类型)。在不指定字符集的情况下尝试它(如果失败,它将由于其他原因失败)。您可以使用交互式REST客户端测试不同的头和编码,例如

基本上您需要删除内容类型字符串中的逗号“,”

或者,您需要将逗号用双引号括起来

范例

内容类型:视频/mp4;codecs=“avc1.64001F,mp4a.40.2”


“编解码器”中的“逗号”必须用双引号括起来

.type(…)
.accept(…)
更改为
application/json;charset=utf8
也没有帮助。顺便说一句,我的客户正在使用此服务:
http://opentable.herokuapp.com/api/restaurants?name=taj
我知道了。服务器返回内容类型中的两个参数。它可以与Firefox REST客户端配合使用。我会在这里和另一个客户核对一下。是的,我在chrome上使用POSTMAN,它也能很好地显示数据。但是,我在DropWizard/Jersey中的客户端由于某些原因无法解析它。您也在服务器中生成该数据吗?我刚刚注意到Firefox测试仪忽略无效的HTTP头,接受“;”之后的任何内容这有点误导。
Content-type: application/json; charset=utf8