我设法创建了一个Android应用程序,可以使用这个网站http://v4.ipv6-test.com/api/myip.php通过volley.Im获取设备公共IP。
当我使用浏览器浏览网站时,我得到了这个IP 64.233.173.15但是当我使用凌空请求它时,它返回此ip 123.136.111.227。
我已经尝试了以下但失败了:
使用不同的网站进行排球
主持自己的脚本以获取公共IP
会发生什么?如何返回与浏览器相同的IP?
IpResolver Class
public class PublicIPResolver {
public static void getIPV4(Context context, Response.Listener<String> ip, Response.ErrorListener errorListener)
{
RequestQueue queue = Volley.newRequestQueue(context);
String url ="http://beta.oligococo.tk/api/ipv4.php";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, ip,errorListener);
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
}
监听
PublicIPResolver.getIPV4(GooglePlayService.this, new Response.Listener<String>() {
@Override
public void onResponse(String ipv4) {
Toast.makeText(GooglePlayService.this, "IP Resolved! n my ip is : " +ipv4, Toast.LENGTH_LONG).show();
myPref.saveToPref("Got_Internet","true");
myPref.saveToPref("MyIP",ipv4);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(GooglePlayService.this,volleyError.getMessage(),Toast.LENGTH_SHORT).show();
myPref.saveToPref("Got_Internet","false");
myPref.saveToPref("MyIP","");
}
});
我试图通过谷歌跟踪ip的来源,结果成为我的ISP。我在局域网里面还是什么?但是为什么浏览器能够显示这个ip 64.233.173.15但是当我使用凌空请求它时,它返回此ip 123.136.111.227。
答案 0 :(得分:0)
我刚刚找到了答案。 IP与Volley显示的结果不同,因为我的Chrome浏览器启用了Data Saver。似乎流量已经重新路由到他们的服务器或某种代理。当我禁用数据保存时,我能够获得与Volley提供的相同的IP