2012-04-10 3 views
0

Ich habe eine Phonegap/Jquery Mobile App, die ich für Android umwickeln möchte, aber das Ziel-SDK, das ich verwende, erlaubt keine Ajax/Cross-Domain-Anfragen. Kurz gesagt, die Anfragen funktionieren gut mit Android 4.0.3 (API 15), die aktuellste, aber nicht für Android 2.3.3 (API 10), was ich für ein Galaxy Tablet kompatibel sein muss. Ich habe eine harte Zeit, diese zu debuggen, da ich den tatsächlichen Fehler nicht sehen kann, da ich in phonegap eingewickelt bin und Benutzer Firebug/Chrome Webtools kippe. und ich hatte noch kein Glück bei developer.android.com. Ich habe die Schritte unter http://jquerymobile.com/test/docs/pages/phonegap.html versucht, einschließlich $ .mobile.allowCrossDomainPages = true; $ .support.cors = Wahr.Ajax-Anfragen arbeiten nicht an bestimmten Android-SDK

Das hat auch nicht funktioniert. Kann mir jemand helfen, ich weiß nicht, was ich sonst noch versuchen soll. Danke!

Hier ist ein schnelles Beispiel für Code. beachten Sie, dass es gibt Erfolg = true aber trifft der Fehler ‚Antwort nicht ein XML-Element ist‘:

return $.soapRequest({ 
     url: url, 
     namespace: 'testns', 
     returnJson: false, 
     shortMethod: 'methodname', 
     method: 'longmethodname', 
     params: params || {}, 
     success: function(data) { 
      if (data && data.documentElement) { 
      // hits this on Android SDK 15 
      if (successFn) { 
       return successFn(data.documentElement); 
      } 
      } 
      else { 
      // hits this on Android SDK 10 
      return fail("Response is not an XML element!"); 
      } 
     }, 
     error: function(str) { 
      return fail(str); 
     } 
+0

in diesem http Werfen Sie einen Blick: //aurir.wordpress .com/2010/03/22/tutorial-bekommen-android-emulator-arbeiten-mit-fiddler-http-proxy-tool/ Dies könnte auch helfen http://jsconsole.com/remote-debugging.html – bmurmistro

Antwort

0

Versuch zu schreiben Httpconnection mit phonegap pluggin. es cound domänenübergreif

httpPlugin.java

package com.android.test; 

import org.apache.cordova.api.Plugin; 
import org.apache.cordova.api.PluginResult; 
import org.apache.cordova.api.PluginResult.Status; 
import org.json.JSONArray; 
import org.json.JSONException; 

import android.util.Log; 

import com.android.connection.HTTPConnect; 

public class HttpPlugin extends Plugin { 
    public final String ACTION_SEND_MESSAGE = "SendCommand"; 
    private HTTPConnect httpConnect; 

    public HttpPlugin() { 
     // TODO Auto-generated constructor stub 
     httpConnect = new HTTPConnect(); 
    } 

    @Override 
    public PluginResult execute(String action, JSONArray arg1, String callbackId) { 
     PluginResult result = new PluginResult(Status.INVALID_ACTION); 
     if (action.equals(ACTION_SEND_MESSAGE)) { 
      try { 
       String message = arg1.getString(0); 
       String receiveString = httpConnect.setURL(message); 
       if(receiveString == null){ 
        //show error result 
        result = new PluginResult(Status.ERROR,"kakaka"); 
       }else{ 
        Log.v("MAN", "data received"); 
        result = new PluginResult(Status.OK); 
       } 
       result = new PluginResult(Status.OK); 
      } catch (JSONException ex) { 
       // TODO Auto-generated catch block 
       result = new PluginResult(Status.JSON_EXCEPTION, ex.getMessage()); 
      } 
     } 
     return result; 
    } 
} 

plugin.xml Datei

Httpplugin .js

var Httpplugin = function() {}; 

Httpplugin.prototype.post = function (message, successCallback, failureCallback) { 
// navigator.notification.alert("OMG"); 
    return cordova.exec(successCallback, failureCallback, 'Httpplugin', 'SendCommand', [message]); 
}; 

PhoneGap.addConstructor(function() { 
    PhoneGap.addPlugin("http", new Httpplugin()); 
}); 
Verwandte Themen