C# 使用来自Java的.NET服务

C# 使用来自Java的.NET服务,c#,java,url,service,C#,Java,Url,Service,我用C#制作了一个.NET服务,可以通过 http://localhost:2586/Service1.asmx/AddPackage?username=acesda&description=no%20Description&state=New&location=Home 如果我使用浏览器,服务工作正常,我可以在浏览器中看到XML结果。 但是,如果在Java应用程序中使用以下代码,则会出现HTTP 400错误: Server returned HTTP response

我用C#制作了一个.NET服务,可以通过

http://localhost:2586/Service1.asmx/AddPackage?username=acesda&description=no%20Description&state=New&location=Home
如果我使用浏览器,服务工作正常,我可以在浏览器中看到XML结果。 但是,如果在Java应用程序中使用以下代码,则会出现HTTP 400错误:

Server returned HTTP response code: 400 for URL: http://localhost:2586/Service1.asmx/AddPackage?adminName=admin&sessionID=1388849172471&packageOwner=user&description=iPhone 4s&state=new&location=iPhone 4s
代码:

我必须注意,我从exception复制了地址,它可以在浏览器中工作。
谢谢。

为什么这里有空格:*iPhone 4s**&state=new&location=**iPhone 4s**问题可能是您的服务是.Net应用程序固有的。我可以从你的网址上说。因此,当本地ASP服务器未运行时,从java应用程序访问它将导致错误。我不知道这样行不行。尝试在IIS中发布您的服务,然后您就可以使用它。如果复制异常地址并将其粘贴到Firefox中,则收到所需的XML。所以地址没有问题。也许这与Java代码有关。@GunnerAziz你是对的。那个地方把一切都搞得一团糟。浏览器似乎对空间进行了编码,因此它从那里开始工作。谢谢,请做吧。你值得投票。
    try {
            String parameters = String.format(PARAMETERS_TEMPLATE, adminName, sessionID, packageOwner, description, packageState, description, location);
            String url = String.format(PACKAGE_URL_TEMPLATE, "AddPackage", parameters);
            Document responseDocument = Utils.getRemoteXML(url, 1000);
            properties.put("success", Utils.isSuccesfull(responseDocument));
            properties.put("failReason", Utils.getMessage(responseDocument));
        } catch (Exception e) {
            properties.put("success", "false");
            properties.put("failReason", e.getMessage());
        }

    public static Document getRemoteXML(String url, int timeout) throws Exception {
        URLConnection connection = new URL(url).openConnection();
        connection.setConnectTimeout(timeout);
        SAXBuilder builder = new SAXBuilder();
        Document document = (Document) builder.build(connection.getInputStream());
        return document;
    }