none
WebService调用问题 RRS feed

答案

  • 刚才用我的机器做服务器,从别的机器访问,结果也不行。

    后来在网上查到,需要启用 HTTP GET 和 HTTP POST。
    启用方法:WebConfig的system.web下,追加以下项目
        
        <webServices>
            <protocols>
                <add name="HttpGet"/>
                <add name="HttpPost"/>
            </protocols>
        </webServices>

    测试后别的机器可以成功调用我机器的webService了。
    但是同样的办法在服务器上还是不行,估计是防火墙什么的原因。
    2009年10月19日 7:09
  • 完全解决了。
    因为要通过Proxy才能访问Inter网,所以要在代码里追加相关处理。

                String strProxy="xx.xx.xx.xx";
                String strPort="8080";
                Properties systemProperties = System.getProperties();
                systemProperties.setProperty("http.proxyHost",strProxy);
                systemProperties.setProperty("http.proxyPort",strPort);
    2009年10月19日 7:48

全部回复

  • GetUserInfo是否标记为[WebMethod]
    2009年10月19日 2:37
  • GetUserInfo是否标记为[WebMethod]

    标记为[WebMethod]的,要不ASP.NET也调用不了。
    2009年10月19日 2:38
  • 你怎么调用的?

    2009年10月19日 2:46
  • 我把JAVA代码贴出来。大家帮我看看。(我很没用过JAVA)

     private static void HTTPCall()
     {
            //String urlString = "http://localhost/PanelmixWebService/Service.asmx/GetUserInfo"; // 这个没问题
           String urlString = "http://xx.xx.xx.xx/PanelmixWebService/Service.asmx/GetUserInfo"; // 这个出错,连接不到服务器
            try {
                URL url = new URL(urlString);
                URLConnection uc = url.openConnection();
                uc.setDoOutput(true);//POST可能にする

                uc.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
                OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得

             // パラメータ設定
             String postStr = "strUserID" + "=" + "test";
             postStr += "&strPassword" + "=" + "pass";

                PrintStream ps = new PrintStream(os);
                ps.print(postStr);//データをPOSTする
                ps.close();

                InputStream is = uc.getInputStream();//POSTした結果を取得
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                String s;
                while ((s = reader.readLine()) != null) {
                    System.out.println(s);
                }
                reader.close();
            } catch (MalformedURLException e) {
                System.err.println("Invalid URL format: " + urlString);
                System.exit(-1);
            } catch (IOException e) {
                System.err.println("Can't connect to " + urlString);
                System.exit(-1);
            }
        }

    2009年10月19日 2:46
  • 我也用类似的C#代码调用过,老报500错。
    后来是用WSDL处理之后生成的类文件,声明一个对象来调用才成功的。
    还有一种方法是使用C#反射来动态调用。
    JAVA的我没写过。

    2009年10月19日 2:54
  • java 的 开发工具(Epxxxxle? 不会拼写) 有添加 webservice 引用的选项啊  也是根据wsdl 生成代码   你可以仔细找找
    那个。。。 马上要成为 V dash staff了。。。
    2009年10月19日 3:03
  • java 的 开发工具(Epxxxxle? 不会拼写) 有添加 webservice 引用的选项啊  也是根据wsdl 生成代码   你可以仔细找找
    那个。。。 马上要成为 V dash staff了。。。

    对JAVA一点也不熟。。。找不到。。。还有就是最好是能用HTTP调用的方法。
    因为客户说这个API是提供给别的客户使用,别的客户用什么开发语言他也不清楚。
    2009年10月19日 3:16
  • java 的 开发工具(Epxxxxle? 不会拼写) 有添加 webservice 引用的选项啊  也是根据wsdl 生成代码   你可以仔细找找
    那个。。。 马上要成为 V dash staff了。。。

    对JAVA一点也不熟。。。找不到。。。还有就是最好是能用HTTP调用的方法。
    因为客户说这个API是提供给别的客户使用,别的客户用什么开发语言他也不清楚。

    又找了下,找到webservice 引用的地方了,但是在service defin里面输入http://xx.xx.xx.xx/PanelmixWebService/Service.asmx?wsdl后显示找不到服务器,WebServiceProject不存在。IE里http://xx.xx.xx.xx/PanelmixWebService/Service.asmx?wsdl能够显示的。

    服务器用的是亚马逊的EC2,和这个有关系吗?
    2009年10月19日 3:41
  • asp.net ajax web service默认不能跨域访问
    http://topic.csdn.net/u/20080821/13/60200f5b-13fa-47ae-b511-e5e96c89e2d4.html 参考
    2009年10月19日 4:11
  • 刚才用我的机器做服务器,从别的机器访问,结果也不行。

    后来在网上查到,需要启用 HTTP GET 和 HTTP POST。
    启用方法:WebConfig的system.web下,追加以下项目
        
        <webServices>
            <protocols>
                <add name="HttpGet"/>
                <add name="HttpPost"/>
            </protocols>
        </webServices>

    测试后别的机器可以成功调用我机器的webService了。
    但是同样的办法在服务器上还是不行,估计是防火墙什么的原因。
    2009年10月19日 7:09
  • 完全解决了。
    因为要通过Proxy才能访问Inter网,所以要在代码里追加相关处理。

                String strProxy="xx.xx.xx.xx";
                String strPort="8080";
                Properties systemProperties = System.getProperties();
                systemProperties.setProperty("http.proxyHost",strProxy);
                systemProperties.setProperty("http.proxyPort",strPort);
    2009年10月19日 7:48