我正在使用$ http.get连接到传递2个参数的asmx webservice:用户名和密码。但是它返回Web服务的html页面而不是数据。 我错过了什么吗?
这是我的controller.js代码:
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName("time1.google.com");
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getOriginateTimeStamp().getTime();
long returnTime2 = timeInfo.getReturnTime();
Date current = new Date(returnTime);
Date current1 = new Date(returnTime2);
Log.i("actualtime", current.toString()); //it give me UTC+6
Log.i("actualtime",current1.toString()); //it give me UTC+6
这是我的services.js代码:
$scope.enterlogin = function(usern,pass)
{
loginService.getUser(usern,pass).then(function(response){
console.log('response is = ' + response.data);
};
}
我还将这些添加到webservice的web.config文件中:
.factory('loginService', ['$http', function($http){
var base_url = "http://<ipaddress of webservie>/UserService3/WebService1.asmx?op=getUserbyUsername";
return {
getUser: function(usern,pass){
console.log('code side usern is = ' + usern + "" + pass);
return $http.get(base_url, { params: { passw: pass, uname: usern}
});
}
}
}])
而且:
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<httpHandlers>
<add verb="GET,HEAD,POST,OPTIONS" path="*.asmx" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
这是webservice中的webmethod:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
答案 0 :(得分:0)
您可能需要将System.Web.UI.PageHandlerFactory
(通常用于aspx端点)更改为System.Web.Services.Protocols.WebServiceHandlerFactory
(更常用于asmx端点)。
编辑:尝试将返回值更改为void
然后执行此操作:
Context.Response.Write(new JavaScriptSerializer().Serialize(user));
看看是否有效。