语言

Menu
Sites
Language
Gear S XMLHttpRequest get response message from server

I'm sending data to my local jersey server from the Gear S.  I now want to display the reponse text from the

server but I can't seem to find out how. The code for my Gear S is the following:


function addHeartRate(heartrate){
	if (new Date().toString() != heartRateTimestamp) {
		heartRateTimestamp = new Date().toString();
		var client = new XMLHttpRequest();
		var url = "http://192.168.1.104:8080/appdata/post";
		client.open("post", url);
		client.setRequestHeader('Content-Type', 'application/json');
		var parameters = [
			{
				"type": 2,
				"HeartRate": {
					"heartrate": heartrate,
					"heartratesTimestamp": heartRateTimestamp,
					"macAddress": macAddress
				}
			}
		];
		client.send(JSON.stringify(parameters));
		console.log(client.responseText);	
	}
}

The code for my jersey server:
 

    @POST
    @Path("/post")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces("text/plain")
    public String getJSONMessage(String gearSData) {
        Gson gson = new Gson();
        DataModels model = gson.fromJson(gearSData, DataModels.class);
        for (DataModels.Container container : model) {
            String innerJson;
            switch (container.type) {
                case 1:
                    innerJson = gson.toJson(container.Steps);
                    DataModels.StepsType steps = gson.fromJson(innerJson, DataModels.StepsType.class);
                    System.out.println(steps);
                    break;
                case 2:
                    innerJson = gson.toJson(container.HeartRate);
                    DataModels.HeartRateType heartRate = gson.fromJson(innerJson, DataModels.HeartRateType.class);
                    System.out.println(heartRate);
                    break;
            }
        }
        return "Answer";
    }

How can this be done?

编辑者为: Tim Deweert 05 3月, 2016

响应

2 回复
Marco Buettner
function addHeartRate(heartrate){
    
    function onReadyStateChange(response) {
        if(response.status !== 4) {
            return;
        }
        
        if(response.statusCode === 200) {
            console.log(response.responseText);
        }
    }
    
    
    if (new Date().toString() != heartRateTimestamp) {
		heartRateTimestamp = new Date().toString();
		var client = new XMLHttpRequest();
		var url = "http://192.168.1.104:8080/appdata/post";
		client.open("post", url);
		client.setRequestHeader('Content-Type', 'application/json');
		var parameters = [
			{
				"type": 2,
				"HeartRate": {
					"heartrate": heartrate,
					"heartratesTimestamp": heartRateTimestamp,
					"macAddress": macAddress
				}
			}
		];

        client.onreadystatechange = onReadyStateChange;
		client.send(JSON.stringify(parameters));
	}
}

The XMLHttpRequest is a asychron and u have to wait different states until the response will be shown... You have 5 states, 0-4 and u also have to check if the request is successful (statusCode 200, OK) ... It is a good practice to handle other status codes like 404, 403

AVSukhov

Hello,

Using XMLHttpRequest:

https://developer.tizen.org/development/tutorials/web-application/w3chtml5supplementary-features/communication/xmlhttprequest-level-1-and-2