2013-04-05 92 views
0

有没有办法通过AJAX发送的Android本地HTML表单远程PHP服务器? (本地手段的文件在我的设备),我的情况是这样的:在我的应用程序,我在我的Android设备的HTML文件,并在网页视图被加载,我也有我的设备中的JavaScript文件。我想要做的就是将HTML表单数据发送到远程服务器。在我目前的状况,它不发送任何数据,我已经检查的JavaScript和PHP和代码是好的,它的工作的应用程序的IOS版本。我尝试过其他解决方法和我所观察到的是,当我使用本地文件加载HTML文件中的WebView(如webview.loadUrl(“文件://” + Environment.getExternalStorageDirectory()+“/ android_asset /列表。 。HTML“),该机器人正在寻找所有其他相关的文件(例如formsprocessor.php)在本地,但在JavaScript/AJAX在它的功能,所有必要的参数都正确地提供我所遇到的错误是:FileNotFound:内容:// packagename.com/formsprocessor.php &未知chronium错误:-6 有没有一种方法或什么是做到这一点的最好办法通过AJAX发送的Android本地HTML表单远程PHP服务器

感谢,克林特

回答

0

这解决我的问题:? 一个用javascripthandler,并在我的JavaScript我叫f从处理程序中取消。所以基本上,android使用httppost处理数据上传到服务器。这是代码;

处理程序:

final class IJavascriptHandler{ 
    IJavascriptHandler(){} 

    public void sendJSONToAndroid(String text){ 
      if(!Config.canConnect((ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE), home) && dialogNoConnFlag == false)     { 
        dialogNoConnFlag = true; 
        Config.notificationMsg(Config.ERRORNOCONN,home, Config.TITLE1 + " " + Config.TITLE6); 
        return; 
       } 
       try { 
        Log.v("SendToServer","Send JSON to Server"); 
        String url = ""; 
        JSONObject json_data = new JSONObject(text); 
        JSONArray names= json_data.names(); 
        JSONArray values = json_data.toJSONArray(names); 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
        for(int i = 0 ; i < values.length(); i++){ 
         Log.v("Good",names.getString(i).toString()); 
         if(names.getString(i).equals("url")) { 
          url = json_data.getString(names.getString(i)).toString(); 
         } 
         nameValuePairs.add(new BasicNameValuePair(names.getString(i).toString(), json_data.getString(names.getString(i)).toString())); 

        } 
        Config.uploadToServer(nameValuePairs, url); 
       } 
       catch (JSONException e) 
       { 
        Config.notificationMsg(Config.ERRORMSG + e.getMessage(), (Activity) home, Config.TITLE1 + " " + Config.TITLE6); 
       } 
      } 

    } 

的httppost:

public static String uploadToServer(List<NameValuePair> nameValuePairs, String url){ 
    if(Session.isordinaryHost) 
    { 
     httpclient = new DefaultHttpClient(); 
    } 
    else 
    { 
     httpclient = new MyHttpClient().getNewHttpClient(); 
     ((AbstractHttpClient) httpclient).getCredentialsProvider().setCredentials(
       new AuthScope(Session.siteIp, 443), 
       new UsernamePasswordCredentials(Session.siteUsername, Session.sitePassword)); 
    } 
    httppost = new HttpPost(url); 
    try 
    { 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     EntityUtils.toString(entity); 
    } 
    catch (ClientProtocolException e) 
    { 
     return e.getMessage(); 
    } 
    catch (IOException e) 
    { 
     return e.getMessage(); 
    } 
    return null; 
} 

的JavaScript:

function CheckCompleteRecords() { 
DB.transaction(function(tx) { 
    tx.executeSql(SelectCompleteForUploadStatement, [], function(tx, result) { 
    Dataset = result.rows; 
     for (var i = 0, item = null; i < Dataset.length; i++) { 
      item = Dataset.item(i); 
    var a = createJSON(item['FormName'],item['UserID'],item['Image1'],item['Image2'],item['Image3'],item['Image4'],item['Image5'],item['Field1'],item['Field2'],item['Field3'],item['Field4'],item['Field5'],item['Field6'],item['Field7'],item['Field8'],item['Field9'],item['Field10'],item['Field11'],item['Field12'],item['Field13'],item['Field14'],item['Field15'],item['Field16'],item['Field17'],item['Field18'],item['Field19'],item['Field20'],item['Field21'],item['Field22'],item['Field23'],item['Field24'],item['Field25'],item['Field26'],item['Field27'],item['Field28'],item['Field29'],item['Field30'],item['Field31'],item['Field32'],item['Field33'],item['Field34'],item['Field35'],item['Field36'],item['Field37'],item['Field38'],item['Field39'],item['Field40'],item['Field41'],item['Field42'],item['Field43'],item['Field44'],item['Field45'],item['Field46'],item['Field47'],item['Field48'],item['Field49'],item['Field50'],item['Field51'],item['Field52'],item['Field53'],item['Field54'],item['Field55'],item['Field56'],item['Field57'],item['Field58'],item['Field59'],item['Field60'],item['Field61'],item['Field62'],item['Field63'],item['Field64'],item['Field65'],item['Field66'],item['Field67'],item['Field68'],item['Field69'],item['Field70'],item['Field71'],item['Field72'],item['Field73'],item['Field74'],item['Field75'],item['Field76'],item['Field77'],item['Field78'],item['Field79'],item['Field80'],item['Field81'],item['Field82'],item['Field83'],item['Field84'],item['Field85'],item['Field86'],item['Field87'],item['Field88'],item['Field89'],item['Field90'],item['Field91'],item['Field92'],item['Field93'],item['Field94'],item['Field95'],item['Field96'],item['Field97'],item['Field98'],item['Field99'],item['Field100'],item['CurrentDateTime'],item['Geolocation'],item['BarCode']);        
    window.cpjs.sendJSONToAndroid(a); 

      showStuff('SendServerBtn'); 
      window.location = "senttoserver://app_action"; 
    } 
    }); 
}); 
} 
相关问题