makeWebRequest working on simulator but not device

Hi as per title, I don't see why this is not working on the device itself but works fine on the simulator?

The server side code simply receives the request in javascript as: 

if (req.body.request && req.body.request === "urlplz") {

And here is the monkey c code:

function onReceive(responseCode as Number, data as Dictionary or String) as Void{

        if (responseCode == 200) {
            var idplz = Storage.getValue("id");
            if (idplz == null) {
                Storage.setValue("id", data["id"]);
            }
            if (data["yt"].equals("true")) {
                mode= true;
                Storage.setValue("mode", "true");
            }
            yes = data["url"];
            WatchUi.pushView(new $.View(), new $.Delegate(), WatchUi.SLIDE_UP);
        } else {
            WatchUi.pushView(new $.View(), new $.Delegate(), WatchUi.SLIDE_UP);
        }
    }

    function makeRequest() {
        var idplz = Storage.getValue("id");
        if (idplz == null) {
            idplz = "notavailable";
        }
        var url = "myurl.url;
        var params = {                                              // set the parameters
              "request" => "urlplz",
              "urlcode" => idplz 
        };
        var options = {
            :method => Communications.HTTP_REQUEST_METHOD_POST,
            :headers => {
                "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON
            },
            :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
        };
        Communications.makeWebRequest(url, params, options, method(:onReceive));
    }
AND I have also tried it this way which also works fine on the simulator but not the physical device, where I just swapped the params into the headers:
function onReceive(responseCode as Number, data as Dictionary or String) as Void{
        if (responseCode == 200) {
            var idplz = Storage.getValue("id");
            if (idplz == null) {
                Storage.setValue("id", data["id"]);
            }
            if (data["yt"].equals("true")) {
                mode = true;
                Storage.setValue("mode", "true");
            }
            yes = data["url"];
            WatchUi.pushView(new $.View("okay"), new $.Delegate(), WatchUi.SLIDE_UP);
        } else {
            WatchUi.pushView(new $.View("error"), new $.Delegate(), WatchUi.SLIDE_UP);
        }
    }

    function makeRequest() {
        var idplz = Storage.getValue("id");
        if (idplz == null) {
            idplz = "notavailable";
        }
        var url = "myurl.url";
        var options = {
            :method => Communications.HTTP_REQUEST_METHOD_POST,
            :headers => {
                "Content-Type" => Communications.REQUEST_CONTENT_TYPE_JSON,
                "request" => "url",
                "urlplzsir" => code
            },
            :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON
        };
        Communications.makeWebRequest(url, null, options, method(:onReceive));
    }
with the server side javascript code accepting it as: 
if (req.headers['request'] && req.headers['request'] === "gimme") {
  • One thing with your url, is it's got to be https

    so 

    var url="">https://myurl.url";

    in the sim, you want to keep "Use Device HTTPS Requirements" checked. 

    And you may have another issue based on who signed the certificate for the server.

    The first thing you tried is probably the correct one, using params.

    And when it comes to testing on a real device, understand that Android and iOS may not work the same.