我们正在开发一个条形码应用程序,以便在运行Windows Mobile 5.0 Pocket PC的移动计算机上运行,并且需要从我们的Oracle数据库中获取数据。
Apex已经设置但是如何使用Apex的本机身份验证创建安全的Web服务?如何设置“仅限HTTPS”?
更新
我现在可以在浏览器中调用...?wsdl链接,看起来很好。它也在项目中注册为WebReferance。
但是当我运行以下代码时:
CONTAR_USUARIOSService service = new CONTAR_USUARIOSService();
System.Net.NetworkCredential pocket = new System.Net.NetworkCredential("pocket", "000");
service.Credentials = pocket;
double resultado = service.CONTAR_USUARIOS();
我收到此错误:
System.Net.WebException was unhandled
Message="WebException"
StackTrace:
at System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(String methodName, Object[] parameters, WebClientAsyncResult asyncResult)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Supernorte.Recebimento.ContarUsuariosWebReference.CONTAR_USUARIOSService.CONTAR_USUARIOS()
at Supernorte.Recebimento.Login..ctor()
at Supernorte.Recebimento.MainForm.mostrarLogin()
at Supernorte.Recebimento.MainForm..ctor()
at Supernorte.Recebimento.Program.Main()
我收到“未经授权”的错误。
答案 0 :(得分:1)
如果您的Oracle输入和输出通过您的Web服务(我仍然在个人努力)进行路由,您可能能够以这种方式访问您的信息。
添加网络参考。
它会询问您上传Web服务的URL。我猜这可能是你在网站外拥有的网站,但我使用的是内部服务器。
你可以看到我有一个默认的网页,我在那里加载了我在那里停留的可用服务。 1Mainframe.svc`将成为我的“大服务”,但后来我意识到我需要做的不仅仅是做一次调用,所以我创建了下一个,“Erp服务”。
无论如何,在我选择ErpService.svc
后,我得到了这个,我将默认的Web引用名称更改为 ErpService1 。我个人发现,如果我需要编辑或修改服务,XML配置文件会搞砸,所以我只删除Service1并添加Service2。
我添加了一个名为 ErpClass1.cs
的新类
使用我的项目的命名空间添加对我的Web服务的引用,并开始编码!
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using AcpMobile5.ErpService1;
namespace AcpMobile5 {
class ErpClass1 {
private ErpService m_erpService;
public ErpClass1() {
m_erpService = new ErpService();
}
public void Query(string woNumber) {
m_erpService.Query(woNumber);
}
public string PartNumber() {
return m_erpService.CoilPartNo();
}
}
}
显然,这并不能解决所有问题。您仍然需要编写用于访问Oracle数据库的Web服务,这不是一项简单的任务。
但是,我希望它能帮助你指明正确的方向。
这都是使用Visual Studio 2008 for Mobile 5.0完成的。
答案 1 :(得分:0)
所以,我没有像我预期的那样使用Apex。相反,我启用了Oracle XML DB Native Web Services。
经过一段时间的认证困难[主要是输入错误的密码造成的]:]我得到了这段代码:
MyWebService service = new MyWebService();
service.Credentials = new MyWebService("MY_ORACLE_USER", "*******");
double result = service.MY_LOGIN_FUNCTION(this.userName);