package com.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import android.content.Context;
import android.telephony.NeighboringCellInfo;
import android.telephony.TelephonyManager;
public class Location {
public static String LOCATIONS_URL = "http://www.google.com/loc/json";
public static String getLocations(Context context) {
// generate json request
String jr = generateJsonRequest(context);
try {
DefaultHttpClient client = new DefaultHttpClient();
StringEntity entity = new StringEntity(jr);
HttpPost httpost = new HttpPost(LOCATIONS_URL);
httpost.setEntity(entity);
HttpResponse response = client.execute(httpost);
String locationsJSONString = getStringFromHttp(response.getEntity());
return extractLocationsFromJsonString(locationsJSONString);
} catch (ClientProtocolException e) {
//e.printStackTrace();
} catch (IOException e) {
//e.printStackTrace();
} catch (Exception e) {
//e.printStackTrace();
}
return null;
}
private static String extractLocationsFromJsonString(String jsonString) {
String country = "";
String region = "";
String city = "";
String street = "";
String street_number = "";
double latitude = 0.0;
double longitude = 0.0;
//"accuracy":901.0
double accuracy = 0.0;
try {
JSONObject jo = new JSONObject(jsonString);
JSONObject location = (JSONObject) jo.get("location");
latitude = (Double) location.get("latitude");
longitude = (Double) location.get("longitude");
accuracy = (Double) location.get("accuracy");
JSONObject address = (JSONObject) location.get("address");
country = (String) address.get("country");
region = (String) address.get("region");
city = (String) address.get("city");
street = (String) address.get("street");
street_number = (String) address.get("street_number");
} catch (JSONException e) {
//e.printStackTrace();
}
return "(" + latitude + "," + longitude + ")\t" + country + region + city
+ street + street_number + "\t" + "精确度:" + accuracy;
}
// 获取所有的网页信息以String 返回
private static String getStringFromHttp(HttpEntity entity) {
StringBuffer buffer = new StringBuffer();
try {
// 获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(
entity.getContent()));
// 将返回的数据读到buffer中
String temp = null;
while ((temp = reader.readLine()) != null) {
buffer.append(temp);
}
} catch (IllegalStateException e) {
//e.printStackTrace();
} catch (IOException e) {
//e.printStackTrace();
}
return buffer.toString();
}
private static String generateJsonRequest(Context context) {
TelephonyManager manager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
List<NeighboringCellInfo> cellList = manager.getNeighboringCellInfo();
if (cellList.size() == 0)
return null;
JSONStringer js = new JSONStringer();
try {
js.object();
js.key("version").value("1.1.0");
js.key("host").value("maps.google.com");
js.key("home_mobile_country_code").value(460);
js.key("home_mobile_network_code").value(0);
js.key("radio_type").value("gsm");
js.key("request_address").value(true);
js.key("address_language").value("zh_CN");
JSONArray ct = new JSONArray();
for (NeighboringCellInfo info : cellList) {
JSONObject c = new JSONObject();
c.put("cell_id", info.getCid());
c.put("location_area_code", info.getLac());
c.put("mobile_country_code", 460);
c.put("mobile_network_code", 0);
c.put("signal_strength", info.getRssi()); // 获取邻居小区信号强度
ct.put(c);
}
js.key("cell_towers").value(ct);
js.endObject();
} catch (JSONException e) {
//e.printStackTrace();
return null;
}
return js.toString().replace("true", "True");
}
}
分享到:
相关推荐
在Java代码中,当通过HTTP请求传输包含中文的JSON数据时,前端通常会使用JavaScript的`JSON.stringify`函数将JSON对象转换为字符串,并通过GET或POST请求传递给后端。在JavaScript中,字符串默认使用UTF-8编码,因此...
java 通过发送json,post请求,返回json数据的方法 java 通过发送json,post请求,返回json数据的方法
### Java代码发送JSON格式的HTTP POST请求:深入解析与实现 在现代的Web开发中,JSON(JavaScript Object Notation)已成为数据交换的标准格式之一,因其轻量级、易读性及跨平台兼容性而受到广泛青睐。对于Java...
标题"使用java请求json接口数据"指出我们要使用Java发送HTTP请求到一个提供JSON数据的接口。这通常涉及到HTTP的GET或POST方法。GET用于从服务器获取数据,而POST用于向服务器发送数据。在Java中,我们可以使用`java...
下面将详细介绍如何使用 Java 发送一个包含 JSON 数据的 HTTP POST 请求。 #### 代码解析 该示例代码展示了如何通过 Java 发送一个 HTTP POST 请求,并在请求体中携带 JSON 数据。 1. **导入必要的类库**: ```...
这个项目源代码可能包含了使用这些方法之一的例子,展示如何发送GET、POST以及其他类型的HTTP请求,包括设置请求头、处理响应码和读取响应数据。 其次,JSON(JavaScript Object Notation)是一种轻量级的数据交换...
在Java编程中,发送HTTP POST请求来传递JSON数据是常见的任务,特别是在Web服务和API交互中。HTTP POST请求用于向服务器提交数据,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...
总结一下,HttpClient是Java中用于HTTP通信的强大工具,能够方便地发送POST请求并携带JSON数据。通过创建HttpClient对象、设置请求方法、构造HTTP实体、添加请求头以及处理响应,我们可以实现与服务器的高效交互。在...
以上就是Java中发送HTTP/HTTPS GET和POST请求的基本概念,以及处理JSON数据的方法。在实际应用中,还需要考虑错误处理、性能优化和其他安全因素。如果需要更复杂的功能,建议使用成熟的HTTP客户端库。
java http-post json格式客户端请求代码
通过运行和调试这些代码,你将能够深入理解`HttpPost`请求的创建过程以及如何有效地解析接收到的JSON数据。 总之,掌握`HttpPost`请求和`JSON`解析对于任何网络相关的应用程序开发都至关重要。理解并熟练运用这两个...
在HttpPost请求中,我们可能需要将Java对象转换为JSON格式发送到服务器,或者从服务器返回的JSON数据中解析出我们需要的信息。这就需要用到上述的JSON处理库。 在实际操作中,"HttpRequestDemo"可能是一个Java代码...
综上所述,通过Java调用带有JSON参数的WebService,涉及到了Java编程语言的使用、JSON数据格式的处理以及WebService通信机制。开发者需要掌握这些技术来实现不同类型的应用程序之间的互操作性和数据交换。
它允许开发者模拟GET和POST等HTTP请求,并可以方便地发送JSON等数据作为请求参数。在本文中,我们将深入探讨如何使用HttpClient进行HTTP请求操作,以及如何处理JSON数据。 首先,我们需要引入HttpClient的相关依赖...
随着互联网技术的发展,Java开发者常常需要在应用程序中发起HTTP请求,以获取网络资源或与远程服务进行数据交换。本篇内容将详细介绍如何使用Java发起HTTP请求并处理返回的JSON对象。 首先,要发起一个HTTP请求,...
PHP是常用于处理请求并返回JSON数据的后端语言之一。在文章中的PHP实例部分,使用了ThinkPHP框架中的M方法来查询数据库,返回的是一个包含菜品信息的数组,然后使用json_encode()函数将数组编码为JSON字符串。 3. ...
本话题主要关注在Web平台中,使用Java后端和JavaScript前端进行JSON数据交互的过程,具体涉及到AJAX(Asynchronous JavaScript and XML)技术以及JSON(JavaScript Object Notation)数据格式。 **1. AJAX**:AJAX ...
在Java编程中,有时我们需要模拟HTTP POST请求向服务器发送数据,特别是当数据格式为JSON时。下面我们将详细探讨两种常见的实现方式,即使用`HttpURLConnection`和`HttpClient`。 **方法一:使用HttpURLConnection...