2016-03-17 44 views
1

从Ionic和Angular应用程序发出对HTTP REST API的获取请求。在家庭网络上提出请求时,API会正确接收并响应每个请求。

但是,当我在4g数据连接上发出相同的请求时,只有第一个请求成功。在接下来的所有请求中,服务器都不会收到所述请求,但$ http.get就像接收到响应并报告状态码为200.在这种情况下,“响应”永远不会改变初始请求导致的响应。

清除应用程序数据将重新启动此循环:清除成功后的第一个请求,并且该响应会重复。

这是发出GET请求的函数。 res的内容显示在下面的屏幕截图中。

this.getSongInfo = function() { 
    return $http.get('http://REDACTED:8080/getName').then(function(res) { 
     console.log(res); 
     return res.data; 
    }, function(err) { 
     console.log(err); 
     return false; 
    }); 
    } 

A screenshot of the response from the $http.get function. The response is the same as the first request each time after

UPDATE Lex的答案帮助。我没有意识到我无法将$ httpProvider注入到服务中。一旦我添加它作为我的app.config一切似乎正常工作。仍然不确定为什么只有在数据连接时才进行缓存,但在角度文档中找不到任何数据连接启用缓存的情况。

+0

按照[本答案](http://stackoverflow.com/a/19771501/548997)中所述禁用缓存是否有任何影响? – Lex

+0

谢谢,这已经成功了。我早些时候尝试过使用这个解决方案,但是我没有意识到我不能在服务中使用$ httpProvider。现在,我已经把它放在我的app.config中,似乎按预期工作。 – papahummle

+0

@Lex,你应该让你的评论一个答案 – Ladmerc

回答

0

这听起来像响应被缓存在某处。当你期望同一个请求每次都返回相同的响应时,这很有用,但是你的情况显然不是所需的行为。根据您提供的内容,无法知道外部工具/设置是如何导致响应被缓存的。

相关问题