我从简单的Java应用程序中使用.NET Web服务时遇到问题。如果Web服务客户端获取预期的数据,我现在只测试,显然它没有。我使用wsdl位置在Eclipse中创建了一个Web服务客户端,它正确。此外,我已经在.NET方面测试了这些方法,并且它们正常工作。因此,在使用Web服务客户端生成的方法时,问题必定是我所缺少的。我将展示几乎非常简单的代码:
package com.consumeserviciodirectorio;
import java.rmi.RemoteException;
import org.apache.axis.AxisFault;
import org.tempuri.*;
import org.datacontract.schemas._2004._07.DAL_DirectorioCide_Modelo.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
IDirectorioCIDEProxy d = new IDirectorioCIDEProxy();
String resp = d.jerry("ya");
System.out.println(resp);
ModeloEmpleadoParaDirectorio[] lista = d.consulta("Paterno=|osorio|");
System.out.println(lista.length);
for(ModeloEmpleadoParaDirectorio res:lista){
System.out.println("Nombre: "+res.getNombres()+" Apellidos: "+res.getPaterno()+" "+res.getMaterno());
System.out.println("Area: "+res.getAreaDescripcion()+" Email: "+res.getEmailCia());
}
}
catch (AxisFault e) {
System.out.println(e.getMessage()+ " "+e.getFaultReason());
}
catch (RemoteException ex) {
System.out.println(ex.getMessage());
}
}
}
此外,.NET端的代码是这样的(它已经过测试,它可以使用参数,因为我将它传递给上面):
public List<Modelo.ModeloEmpleadoParaDirectorio> Consulta(string Consulta)
{
List<Modelo.ModeloEmpleadoParaDirectorio> _result = new List<Modelo.ModeloEmpleadoParaDirectorio>();
try
{
using (EvolutionCatalogosEntities modelo = new EvolutionCatalogosEntities())
{
Consulta = Consulta.Replace("|", "\"");
_result = (from U in modelo.Empleado
join C in modelo.CatAreas on U.ActInstId equals C.IdCatArea
select new Modelo.ModeloEmpleadoParaDirectorio
{
Id = U.Id,
Nombres = U.Nombres,
Paterno = U.Paterno,
Materno = U.Materno,
AreaDescripcion = C.AreaDescripcion,
EmailCia = U.EmailCia
}).AsQueryable().Where(Consulta).ToList();
}
return _result;
}
catch
{
return _result;
}
}
然而,无论我做什么,名为lista
的变量都是一个空数组,这意味着它的长度为0.必须有一些我错过但我已经使用过的东西调用Web服务之前和它工作的方法相同。有人可以指出该代码的问题是什么?
答案 0 :(得分:0)
我找到了在.NET端调试服务的答案。问题是svc的web.config中缺少模型的连接字符串。在连接的任何一点上,我都知道代码不是问题。很抱歉发布可能与实际问题无关的问题。