如题,
java webservice(注册用):    http://110.70.114.58:8080/RegisterService.jws
方法:Register  ,参数:username,password两个在winform中什么调用?
MSDN源码如下,但还是不行          // Create a request for the URL. 
            WebRequest request = WebRequest.Create ("http://110.70.114.58:8080/RegisterService.jws/register?username=helpme&password=123456");
            // If required by the server, set the credentials.
            request.Credentials = CredentialCache.DefaultCredentials;
            // Get the response.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
            // Display the status.
            Console.WriteLine (response.StatusDescription);
            // Get the stream containing content returned by the server.
            Stream dataStream = response.GetResponseStream ();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader (dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd ();
            // Display the content.
            Console.WriteLine (responseFromServer);
            // Cleanup the streams and the response.
            reader.Close ();
            dataStream.Close ();
            response.Close ();要啥做,求助

解决方案 »

  1.   

    你直接添加web引用不行么 ?
      

  2.   


    这种方式是可以的,但服务的IP会变,我要什么通过程序的方式实现
    我想把IP写入配置文件,这样好维护
      

  3.   

    不用web引用,如何动态调用Web Service?
      

  4.   

    解决了,谢谢路过的朋友        /// <summary>
            /// 实例化WebServices
            /// </summary>
            /// <param name="url">WebServices地址(不带"wsdl")</param>
            /// <param name="spacename">命名空间</param>
            /// <param name="methodname">调用的方法</param>
            /// <param name="args">把webservices里需要的参数按顺序放到这个object[]里</param>
            public object InvokeWebService(string url,string spacename,string methodname, object[] args)
            {
                try
                {
                    //获取WSDL
                    XmlTextReader reader = new XmlTextReader(url+"?wsdl");
                    ServiceDescription sd = ServiceDescription.Read(reader);                string classname = sd.Services[0].Name;
                    ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
                    sdi.AddServiceDescription(sd, "", "");
                    CodeNamespace cn = new CodeNamespace(spacename);                //生成客户端代理类代码
                    CodeCompileUnit ccu = new CodeCompileUnit();
                    ccu.Namespaces.Add(cn);
                    sdi.Import(cn, ccu);
                    CSharpCodeProvider csc = new CSharpCodeProvider();
                    ICodeCompiler icc = csc.CreateCompiler();                //设定编译参数
                    CompilerParameters cplist = new CompilerParameters();
                    cplist.GenerateExecutable = false;
                    cplist.GenerateInMemory = true;
                    cplist.ReferencedAssemblies.Add("System.dll");
                    cplist.ReferencedAssemblies.Add("System.XML.dll");
                    cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
                    cplist.ReferencedAssemblies.Add("System.Data.dll");                //编译代理类
                    CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
                    if (true == cr.Errors.HasErrors)
                    {
                        System.Text.StringBuilder sb = new System.Text.StringBuilder();
                        foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
                        {
                            sb.Append(ce.ToString());
                            sb.Append(System.Environment.NewLine);
                        }
                        throw new Exception(sb.ToString());
                    }                //生成代理实例,并调用方法
                    System.Reflection.Assembly assembly = cr.CompiledAssembly;
                    Type t = assembly.GetType(spacename + "." + classname, true, true);
                    object obj = Activator.CreateInstance(t);
                    System.Reflection.MethodInfo mi = t.GetMethod(methodname);                return mi.Invoke(obj, args);
                }
                catch (Exception ex)
                {
                    return null;
                }
            }