telefonicaid / fiware-orion

Context Broker and CEF building block for context data management, providing NGSI interfaces.
https://fiware-orion.rtfd.io/
GNU Affero General Public License v3.0
212 stars 264 forks source link

[NGSI] HTTPBadRequestException: 'fiware-servicepath' through an Orion subscription. #3276

Open ghost opened 6 years ago

ghost commented 6 years ago

I want to persist some historical data from my server. So the documentation says that you must first send a subscription to Orion and then Orion will send the notification to Cygnus.

I made the subscription like this:

Entity payload = Entity.json("{\r\n" + 
                "   \"entities\": [{\r\n" + 
                "       \"type\": \"Usuario\",\r\n" + 
                "       \"isPattern\": \"true\",\r\n" + 
                "       \"id\": \"Usuario*\"\r\n" + 
                "   }],\r\n" + 
                "   \"attributes\": [],\r\n" + 
                "   \"reference\": \"http://192.168.10.3:5050/notify\",\r\n" + 
                "   \"duration\": \"P4Y\",\r\n" + 
                "   \"notifyConditions\": [{\r\n" + 
                "       \"type\": \"ONCHANGE\",\r\n" + 
                "       \"condValues\": [\r\n" + 
                "           \"speed\"\r\n" + 
                "       ]\r\n" + 
                "   }],\r\n" + 
                "   \"throttling\": \"PT0.001S\"\r\n" + 
                "}");
        Response response = client.target("http://192.168.10.3:1026/v1/subscribeContext")
                .request(MediaType.APPLICATION_JSON_TYPE)
                .post(payload);

And the creation of entities:


Entity payload = Entity.json("{  \"type\": \"Usuario\",  \"id\": \"Usuario22\",  \"temperature\": {    \"value\": \"80.0\"  },  \"location\": {    \"value\": \""+latitud+", "+altitud+"\", \"type\": \"geo:point\",    \"metadata\": {      \"crs\": {        \"value\": \"WGS84\"      }    }  }}");
Response response = client.target("http://192.168.10.3:1026/v2/entities")
                .request(MediaType.APPLICATION_JSON_TYPE)
                .post(payload);

Then, Cygnus log tell me:

HTTPBadRequestException: 'fiware-servicepath' header value does not match the number of notified context responses

Do any of you know why this is happening? The creation of the headers should be done by Orion or, failing that, by using the configuration of the Cygnus...

Thank you in advance.

fgalan commented 6 years ago

Is this the same case described at https://github.com/telefonicaid/fiware-cygnus/issues/1514#issuecomment-417302236 ?