针对.Net CF客户端的Apex Web服务身份验证

时间:2013-04-03 13:30:36

标签: web-services compact-framework oracle-apex

我们正在开发一个条形码应用程序,以便在运行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()

我收到“未经授权”的错误。

2 个答案:

答案 0 :(得分:1)

如果您的Oracle输入和输出通过您的Web服务(我仍然在个人努力)进行路由,您可能能够以这种方式访问​​您的信息。

添加网络参考。

Add Web Reference

它会询问您上传Web服务的URL。我猜这可能是你在网站外拥有的网站,但我使用的是内部服务器。

cpweb2 mainframe

你可以看到我有一个默认的网页,我在那里加载了我在那里停留的可用服务。 1Mainframe.svc`将成为我的“大服务”,但后来我意识到我需要做的不仅仅是做一次调用,所以我创建了下一个,“Erp服务”。

无论如何,在我选择ErpService.svc后,我得到了这个,我将默认的Web引用名称更改为 ErpService1 。我个人发现,如果我需要编辑或修改服务,XML配置文件会搞砸,所以我只删除Service1并添加Service2。

我添加了一个名为 ErpClass1.cs

的新类

Erp Class 1

使用我的项目的命名空间添加对我的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完成的。

GUI Screenshot

答案 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);