HTTP 错误 400。请求的标头名称无效

Tho*_*mas 5 java httpclient apache-httpclient-4.x

我有一个带有以下代码的 Java 应用程序。我正在尝试使用 HttpClient POST 调用 REST Web 服务。我需要发送自定义标头“auth”进行身份验证。标头的值是由“:”分隔的加密凭据。

        String strAuth = DoAESEncrypt("userid:pwd");
        String strContent = DoAESEncrypt("{\"Name\":Tester,\"Id\":\"123\",\"NickName\":null,\"IsLocked\":false}");

          HttpClient client =  new DefaultHttpClient();          
          HttpPost post = new HttpPost("https://domainname/servicename");
          post.addHeader("auth",strAuth);
          post.addHeader("Content-Type", "application/json");
          StringEntity input = new StringEntity(strContent);
          post.setEntity(input);
          HttpResponse response = client.execute(post);
Run Code Online (Sandbox Code Playgroud)

DoAESEncrypt 是一个对输入字符串进行加密并返回 Cipher 的函数。但是,当我运行此代码时,出现以下错误,其中包含 client.execute 语句:

HTTP 错误 400。请求的标头名称无效

但是,如果我使用相同的 DoAESEncrypt 函数生成的加密密码对以下标头进行硬编码,则它可以正常工作:

      post.addHeader("auth","5PE7vNMYVFJT/tgYo7TGuPO05lqMQx5w3BAJKDS567A73vM0TYFmWO5tP=");
Run Code Online (Sandbox Code Playgroud)

Tho*_*mas 2

由于某种原因,DoAESEncrypt 函数在密文中添加了回车符“\r\n”。这已被删除并且运行良好。