Javascript 无法在Android应用程序中使用JSON web服务
我正在使用HTML5和JS在Android中做一个项目,使用JAX RESTful在Eclips上成功创建了一个web服务,该服务可以从浏览器访问(获取所有参数的JSON输出) 现在,试图从Eclips IDE解析Andriod虚拟设备中的JSON,这是行不通的。当我今天早些时候尝试时,我可以从外部免费的JSON测试URL解析JSON,但现在即使再次使用完全相同的代码,它也无法工作。同样,当在普通浏览器Chrome/Firefox上试用时,即使它不工作,但它在Eclips内部的内置浏览器中工作良好 这是非常奇怪的行为,但我完全被困在这一点上,据我所知,从目前的情况和研究来看,这可能与同源政策有关。我尝试了另一个版本的Ajax代码来在Chrome中解析这个问题,但同样的问题再次出现 我认为Eclips浏览器的某些设置不适用于同一原产地策略 在我的代码下面Javascript 无法在Android应用程序中使用JSON web服务,javascript,android,json,web-services,Javascript,Android,Json,Web Services,我正在使用HTML5和JS在Android中做一个项目,使用JAX RESTful在Eclips上成功创建了一个web服务,该服务可以从浏览器访问(获取所有参数的JSON输出) 现在,试图从Eclips IDE解析Andriod虚拟设备中的JSON,这是行不通的。当我今天早些时候尝试时,我可以从外部免费的JSON测试URL解析JSON,但现在即使再次使用完全相同的代码,它也无法工作。同样,当在普通浏览器Chrome/Firefox上试用时,即使它不工作,但它在Eclips内部的内置浏览器中工作良
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script language="javascript">
var xmlhttp;
function init(){
xmlhttp = new XMLHttpRequest();
}
function saveLocal(){
var sellerid = document.getElementById("id");
var url = "http://localhost:8080/PlayerServer/webresources/com.playerentity.player/" + sellerid.value;
//var url = "http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo"; This worked before and now only in the built in eclips browser.
xmlhttp.open('GET', url,true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
var seller = eval("("+ xmlhttp.responseText + ")");
seller = JSON.stringify(seller);
var seller1 = JSON.parse(seller);
document.getElementById("lastName").value = seller1.lastname;
document.getElementById("firstName").value = seller1.firstname;
document.getElementById("Email").value = seller1.lastspokenwords;
} else{
alert("xmlhttp status failure " + xmlhttp.responseText);
}
alert("Ready state failue " + xmlhttp.responseText);
}
};
}
</script>
</head>
<body onload="init()">
<h1>Call Seller restful webservice</h1>
<table>
<tr>
<td> Enter Seller ID: </td>
<td> <input type="text" id="id" size="10"/>
<input type="button" value="Load details of user" onclick="saveLocal()"/>
</td>
</tr>
<tr>
<td>First Name </td>
<td>
<input type="text" readonly="true" id="firstName" size="20"/>
</td>
</tr>
<tr> <td> Last Name: </td>
<!-- <td> <input type="text" readonly="true" id="lastName" size="20"/></td> -->
<td> <textarea rows="8" cols="22" id="lastName" ></textarea></td>
</tr>
<tr> <td> Email Address: </td>
<td> <input type="text" readonly="true" id="Email" size="20"/></td>
</tr>
</table>
</body>
</html>
var-xmlhttp;
函数init(){
xmlhttp=新的XMLHttpRequest();
}
函数saveLocal(){
var sellerid=document.getElementById(“id”);
变量url=”http://localhost:8080/PlayerServer/webresources/com.playerentity.player/“+sellerid.value;
//变量url=”http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo;“这在以前和现在都只在内置的eclips浏览器中起作用。
open('GET',url,true);
xmlhttp.send(空);
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var seller=eval(“+xmlhttp.responseText+”);
seller=JSON.stringify(seller);
var seller1=JSON.parse(卖方);
document.getElementById(“lastName”).value=seller1.lastName;
document.getElementById(“firstName”).value=seller1.firstName;
document.getElementById(“Email”).value=seller1.lastspokenwords;
}否则{
警报(“xmlhttp状态失败”+xmlhttp.responseText);
}
警报(“就绪状态故障”+xmlhttp.responseText);
}
};
}
呼叫卖家restful Web服务
输入卖方ID:
名字
姓氏:
电邮地址:
请帮帮我
谢谢,,
Ramesh它在emulator中工作吗?或者在任何设备中?使用您的ip地址或10.0.2.2,而不是使用localhost?现在我检查并发现var url=“”;这显示了解析后的JSON输出,但没有显示我的本地主机地址。。不过,我可以在内置浏览器的Eclips中解析localhost JSON。@srikanth,我正在试图弄清楚如何更改Glassfish服务器的默认IP,以使我的Web服务在其上运行。你知道怎么做吗?不要更改Glashfish服务器ip,如果服务器在android应用程序中运行本地工作站,请通过保持10.0.2.2“+sellerid.value来更改url