将函数从java(Android)移植到AngularJs

时间:2016-02-19 09:54:07

标签: javascript java android angularjs ionic-framework

我正在尝试使用Ionic编写一个旧的原生Android应用程序,我需要http请求的帮助。我是AngularJS的新手(也是js)。

我的Android代码具有以下功能:

String address = "http://www.example.com";
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(address);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("param", sParam));
try {
    post.setEntity(new UrlEncodedFormEntity(pairs));
    HttpResponse response = client.execute(post);
    BufferedReader rd = new BufferedReader(new InputStreamReader(responsegetEntity().getContent()));
    StringBuilder sBuilder = new StringBuilder();
    String sLine = "";
    while ((sLine = rd.readLine()) != null) {
            sBuilder.append(sLine).append("\n");
    }
    String sContent = sBuilder.toString();
    (...parsing sContent...)
} catch (Exception e) {
    //something
}

如果有多个页面,我会调用类似

的函数
String address = "http://www.example.com/result.do?page="+ iPage;
HttpPost post = new HttpPost(address);
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("param", sParam));
Cookie ck = client.getCookieStore().getCookies().get(0);
pairs.add(new BasicNameValuePair("param_ck", ck.getValue()));
try {
    post.setEntity(new UrlEncodedFormEntity(pairs));
    HttpResponse response = client.execute(post);
    (..parsing..)
}

所以,我读了一个网页的html内容(我不是主人)而且我做了一些事情。

我试过$ http.post,但我不确定它是否相同

.factory('Service', function($q,$http) {
  return {
    getResult: function(param) {
      var q = $q.defer();
      var address = "http://www.example.com";
      var sParam = "param";
      $http({
        url: address,
        method: "POST",
        data: {
          'param' : sParam
        }
      })
      .then(function(response) {
        (...)
        q.resolve(position);
      },
      function(error) {
        (...)
        q.reject(error);
      });
      return q.promise;
    }
  };
});

PS:我得到了

  

请求的资源上没有'Access-Control-Allow-Origin'标头。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

我不完全确定您为什么不会在Android代码中出现类似的错误,或者即使您应该这样做,因为我不熟悉原生Android本身。但是你在Ionic中使用Angular的原因是服务器需要实现CORS来摆脱它。

来自MDN

  

当资源从与第一个资源本身所服务的域不同的域请求资源时,会生成跨源HTTP请求。例如,http://domain-a.com提供的HTML页面会为http://domain-b.com/image.jpg发出src请求。如今,Web上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。