Michael Benker
Michael Benker

Reputation: 92

phonegap android ajax over ssl failes

I develope an App with Phonegap and Jquery Mobile. For some reasons I also need to get data from https domains. On IOS everything works perfect, but on Android I always get the following errors and the requests fails

06-17 17:16:33.890 6079-6154/de.sistecs.einlass E/chromium_net: external/chromium/net/socket/ssl_client_socket_openssl.cc:905: 
[0617/171633:ERROR:ssl_client_socket_openssl.cc(905)] handshake failed; returned -1, SSL error code 1, net_error -107

Here is a simple sample code

$(document).on("pageinit", function (event, ui) {
    $("#test").click(function () {
        $.ajax({
            type: "POST",
            url: "https://test.sistecs.de/sismedia/test.php",
            success: function (response) {
                $("#testmsg").text(response);
            }
        });
    });
});

I´ve read hundreds of posts, but didn´t find a solution to my problem. The certificate of the server https://test.sistecs.de/sismedia/test.php is valide.

Can someone help me?

Upvotes: 1

Views: 370

Answers (2)

mene
mene

Reputation: 382

   var myJson = {
        'Par1': 'par'
    };

    $.ajax({
        url: baseUrlAjaxServices + "/....",
        data: JSON.stringify(myJson),

        method: "POST",
        crossDomain: true,
        dataType: 'json',
        contentType: 'application/json',
    })
  .done(function (data) {
     //...
  }).fail(function (error) {
      console.log(error);
  });

Upvotes: 0

Marc-Antoine Brodeur
Marc-Antoine Brodeur

Reputation: 58

It seems like a Cross Origin problem.

With jQuery Mobile you should set $.mobile.allowCrossDomainPages and $.support.cors to true

<script>
    $( document ).on( "mobileinit", function() {
        $.mobile.allowCrossDomainPages = true;
        $.support.cors = true;
    });
</script>

Also be sure that your PHP page sets the headers accordingly. For example:

<?php
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET,PUT,POST,DELETE');
    header('Access-Control-Allow-Headers: Content-Type');
    echo "test";
?>

Edit: I didn't test the code, it is an example. Adapt as you need to.

Upvotes: 1

Related Questions