java - PHP文件中的JSON返回垃圾
问题描述
我正在尝试从我的站点 example.net/index.php 获取 JSON 文件,但是我总是在 Android 应用程序中获取某种 HTML 而不是 JSON 对象。
返回字符串:
<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("674bdf26f9a5fe3df1461aafc3120641");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; location.href="http://example.net/index.php?i=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html>
调用网址:
<?php
$results = array(
"result" => "success",
"username" => "some username",
"projects" => "some other value"
);
header('Content-type: application/json');
echo json_encode($results);
?>
代码:
public String getJSON(String url, int timeout) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
如何获取 JSON 文件而不是此 HTML 代码?
解决方案
您应该传递内容类型,
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setRequestProperty("Content-type", "application/json; charset=utf-8");
c.setUseCaches(false);
推荐阅读
- reactjs - React - TypeError:this.state.data.map 不是函数
- laravel - 将 VueJS 添加到 Laravel 但继续使用 Laravel 的路由器等
- c++ - 带有可选参数的构造函数
- swift - Storekit:如何检查产品是否被购买?
- openssl - OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
- javascript - 获取响应式 Javascript 菜单以堆叠在 img 下。
- php - 对子项运行多个 XPath 查询还是对整个 HTML 文档运行一些 XPath 查询?(PHP)
- javascript - 如何将离线文本单词列表中的数据加载到字符串中?
- c# - 双击访问 C# 中的 WPF TreeViewItem
- jquery - 以编程方式更改值时引导选择多个触发器