我有一个生成JSON对象的JS文件。
这个JSON响应字符串将在我的Android应用程序中使用此函数从我的JS文件的URL收到后进行解析。
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
其中url
是必须从中获取JSON对象的JS文件的URL。
但是,我无法弄清楚如何从我的JS文件中发送JSON响应。
因此,一旦我创建了JSON对象,我应该如何从我的JS文件中正确返回JSON响应,以便可以获取它?
编辑:我在亚马逊网络服务上托管它,因此我可以安装在我的EC2实例上执行任务所需的任何Web服务器软件
编辑2 JS基本上是Google feed API中返回的JSON result format,需要在我的Android应用中获取
答案 0 :(得分:1)
我总是试图在服务器端避免使用JS。当然,您可以使用node.js在服务器上运行JS,但是如果没有其他选项,我只会这样做。
那么你真的确定你的服务器上需要JS吗?您可以使用许多其他语言的Google Feed API(请查看此Google JSON guide)。您可以在Android应用程序中直接访问它(这是Google JSON指南中的Java示例,android代码看起来有点不同):
URL url = new URL("https://ajax.googleapis.com/ajax/services/feed/find?" +
"v=1.0&q=Official%20Google%20Blog&userip=INSERT-USER-IP");
URLConnection connection = url.openConnection();
connection.addRequestProperty("Referer", /* Enter the URL of your site here */);
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null) {
builder.append(line);
}
JSONObject json = new JSONObject(builder.toString());
// now have some fun with the results...
或者,如果您想在服务器上预处理API响应,可以使用php执行此操作:
$url = "https://ajax.googleapis.com/ajax/services/feed/find?" .
"v=1.0&q=Official%20Google%20Blog&userip=INSERT-USER-IP";
// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, /* Enter the URL of your site here */);
$body = curl_exec($ch);
curl_close($ch);
// now, process the JSON string
$json = json_decode($body);
// now have some fun with the results...
答案 1 :(得分:0)
您可以使用node.js或express.js返回响应。
使用JSON.stringify(objToJson))您将获得{"响应":"值"}作为回复
对不起,我不是这方面的专家,但您可能想查看这些链接。
Proper way to return JSON using node or Express
Responding with a JSON object in NodeJS (converting object/array to JSON string)