【问题标题】:HTTP response shows Accept=multipart/form-data BUT not setting this header and settting CamelAcceptContentType, "application/json"HTTP 响应显示 Accept=multipart/form-data 但未设置此标头并设置 CamelAcceptContentType, "application/json"
【发布时间】:2019-09-25 10:17:06
【问题描述】:

我没有在 REQUEST 中设置 Accept=multipart/form-data,我正在设置 exchange.getIn().setHeader("CamelAcceptContentType", "application/json");和 exchange.getIn().setHeader("Content-Type", "application/json");

响应是 Accept=multipart/form-data CamelHttpMethod=POST, CamelHttpResponseCode=415, CamelHttpResponseText=不支持的媒体类型

似乎服务器告诉我它正在向我发送一个多部分表单数据媒体类型,但是,我告诉它我正在寻找 application/json。

我没有在请求中发送多部分表单数据。有人可以解释这里发生了什么吗?谢谢!是服务器设置的吗?

StringBuilder authHeader = new StringBuilder("Bearer ");
authHeader.append(token);
LOG.info("Authorization: " + authHeader.toString());

exchange.setProperty("CamelCharsetName", "UTF-8");  //"CamelCharsetName" Exchange.CHARSET_NAME
exchange.getIn().setHeader("CamelHttpCharacterEncoding", "UTF-8");   //"CamelHttpCharacterEncoding" Exchange.HTTP_CHARACTER_ENCODING
exchange.getIn().setHeader("CamelAcceptContentType", "application/json");  //"CamelAcceptContentType" Exchange.ACCEPT_CONTENT_TYPE
exchange.getIn().setHeader("CamelHttpUri", uploadUrl);  //"CamelHttpUri" Exchange.HTTP_URI
exchange.getIn().setHeader("CamelHttpMethod", "POST");  //"CamelHttpMethod" Exchange.HTTP_METHOD
exchange.getIn().setHeader("x-ge-csvformat", "ODB");
exchange.getIn().setHeader("Tenant", tenant);
exchange.getIn().setHeader("Content-Type", "application/json"); // for JSON ONLY comment for CSV
exchange.getIn().setHeader("Authorization", authHeader.toString());

我想问题应该是为什么我会收到带有 Accept = multipart/form-data 的响应标头?当我没有设置或使用 multipart/form-data 时?

这里是 http Post 请求。

        setHeader[CamelHttpMethod, POST] --> 
    http4://apm-ts-query-svc-prod.app-api.aws-usw02-pr.px.io:443/v2/ts/upload?throwExceptionOnFailure=false <<< Pattern:InOnly, 
    Headers:{Authorization=Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImxlZ2FjeS10b2tlbi1rZXkiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI0Zrzfo6VKOA, 
    breadcrumbId=ID-alfuse2i-35498-1557318510555-3-598, CamelAcceptContentType=application/json, CamelFileAbsolute=false, 
CamelFileAbsolutePath=/app/PassThruMT1/jboss-fuse-6.3.0.redhat-310/g-dig/upload/Industries/J402_Motor_2019-05-02-11-00-00_0.csv, CamelFileLastModified=1557319009000, CamelFileLength=1538, 
CamelFileName=Industries/J_Motor_2019-05-02-11-00-00_0.csv, 
CamelFileNameConsumed=Industries/J_Motor_2019-05-02-11-00-00_0.csv, 
CamelFileNameOnly=J_Motor_2019-05-02-11-00-00_0.csv, CamelFileNameProduced=g-dig/json/Industries/J_Motor_2019-05-02-11-00-00_0.csv, CamelFileParent=g-d/upload/Industries, CamelFilePath=g-dal/upload/Industries/J_Motor_2019-05-02-11-00-00_0.csv, CamelFileRelativePath=Industries/J_Motor_2019-05-02-11-00-00_0.csv, CamelHttpCharacterEncoding=UTF-8, 
CamelHttpMethod=POST, 
CamelHttpUri=https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts/upload?throwExceptionOnFailure=false, 
Content-Type=application/json, CUSTKEY=Industries, EXPIRY=2019-05-09 06:36:36.101, TENANT=676f31-752-40d-81-c80c5be, TOKEN=eyJhbGciOiJSUzI1NiIsImtpZeQ2eflqE5C3j44MvhPIR0bSEZgznonA503vrzfo6VKOA, UPLOADURL=https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts/upload, x-ge-csvformat=ODB}, BodyType:String, Body:{
          "tags" : [ {
            "tagId" : "TI5925.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "8.903611",
              "q" : "3"
            } ]
          }, {
            "tagId" : "TIA4562.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "56.47153",
              "q" : "3"
            } ]
          }, {
            "tagId" : "XIA4596A.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "3.335917",
              "q" : "3"
            } ]
          }, {
            "tagId" : "XIA4596B.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "1.670584",
              "q" : "3"
            } ]
          }, {
            "tagId" : "TIA4561.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "49.85203",
              "q" : "3"
            } ]
          }, {
            "tagId" : "XIA4595A.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "2.098929",
              "q" : "3"
            } ]
          }, {
            "tagId" : "XIA4595B.PV",
            "data" : [ {
              "ts" : "2019-05-02T16:00:00",
              "v" : "2.647079",
              "q" : "3"
            } ]
          }, {
            "tagId" : "TIA4565.PV",
        ... [Body clipped after 1000 chars, total length is 16321]

这是服务器响应 - 响应消息开头的通知 Accept=multipart/form=data。

     log[HTTP4 Upload Response: ${body}] <<< Pattern:InOnly, Headers:{Accept=multipart/form-data, Authorization=Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6ImxlZ2FjeS10b2tlbi1rZXkiLCJ0eXAiOiJKV1QifQ.eyJqdGkiOiI0ZmYwY2UxZGFhN2E0N2U4ODIwA503vrzfo6VKOA, breadcrumbId=ID-alphprdfuse2i-35498-1557318510555-3-598, Cache-Control=no-cache, no-store, max-age=0, must-revalidate, 
    CamelAcceptContentType=application/json, 
    CamelFileAbsolute=false, CamelFileAbsolutePath=/app/PassMT1/jboss-fuse-6.3.0.redhat-310/tal/upload/Industries/J_Motor_2019-05-02-11-00-00_0.csv,
 CamelFileLastModified=1557319009000, CamelFileLength=1538,
 CamelFileName=Industries/J_Motor_2019-05-02-11-00-00_0.csv, CamelFileNameConsumed=Industries/J_Motor_2019-05-02-11-00-00_0.csv,
 CamelFileNameOnly=J_Motor_2019-05-02-11-00-00_0.csv, 
CamelFileNameProduced=g-dal/json/Industries/J_Motor_2019-05-02-11-00-00_0.csv, CamelFileParent=g-dal/upload/Industries, 
CamelFilePath=g-dal/upload/Industries/J_Motor_2019-05-02-11-00-00_0.csv, 
CamelFileRelativePath=Industries/J_Motor_2019-05-02-11-00-00_0.csv, 
CamelHttpCharacterEncoding=UTF-8, CamelHttpMethod=POST, 
CamelHttpResponseCode=415, CamelHttpResponseText=Unsupported Media Type, 
CamelHttpUri=https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts/upload?throwExceptionOnFailure=false, Connection=keep-alive, 
Content-Length=0, Corr=4c4ffcb10fa7ef1c, CUSTKEY=Industries, 
Date=Wed, 08 May 2019 12:38:27 GMT, Expires=0, EXPIRY=2019-05-09 06:36:36.101, Pragma=no-cache, Server=none, Strict-Transport-Security=max-age=31536000 ; includeSubDomains, TENANT=67626f31-75-43-81b-cc5bdbce, TOKEN=eyJhbGciOiJSUzI1NiIsI6GlLIGp8-HPeQ2eflqE5C3j44MvhPIR0bSEZgznonA503vrzfo6VKOA, UPLOADURL=https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts/upload, X-Application-Context=APMTS:cloud:0, X-Content-Type-Options=nosniff, X-Frame-Options=DENY, x-ge-csvformat=ODB, X-Vcap-Request-Id=01d04cf7-47ae-4cf9-7d4c-357afe207769, X-Xss-Protection=1; mode=block}, BodyType:org.apache.camel.converter.stream.InputStreamCache, Body:[Body is instance of org.apache.camel.StreamCache]

【问题讨论】:

  • CamelHttpResponseText=不支持的媒体类型
  • Krzysztof,谢谢,但是,我没有使用 CamelHTTPResponse 标头???
  • 服务器告诉你什么可以接受。您的设置中的服务器不支持 Json。
  • 再次感谢 Krzysztof。请让我再问一个问题。所以,如果我向服务器发布一个 http 请求,并指定 Content-Type 让我们说为 application/json 并且服务器不知道,它会以 Accept=I need this type 响应?请参阅上面我添加更多详细信息。谢谢

标签: java http-headers apache-camel


【解决方案1】:

好的,结果证明这是云环境配置的机制。

服务器 URL 有 2 个端点,1 个用于多部分表单数据,1 个用于 JSON。我正在发布到 CSV 多部分表单数据。

https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts/upload - CSV 多部分 https://apm-ts-ingestion-svc-prod.app-api.aws-usw02-pr.px.io/v2/ts - JSON

所以,答案是肯定的,因为服务器的响应是让我知道它期望或能够交流什么。学习...很有趣 - 谢谢!!

【讨论】:

    猜你喜欢
    • 2016-09-08
    • 2021-05-17
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多