精华内容
下载资源
问答
  • WebApi调用WebService报错

    2017-12-11 03:12:16
    响应消息的内容类型 text/html; charset=utf-8 与绑定(text/xml; charset=utf-8)的内容类型不匹配,有没有大神知道什么问题?
  • 该项目主要实现ajax/winform/webform三种方式通过WebAPI调用WebService服务功能。简单易懂,WebService中主要包含的技术为APISoapHeader方法。初次接触这类技术的程序猿们可供参考。包括数据库脚本以及说明,很是...
  • //Web访问对象,构造请求的url地址 string serviceUrl = uri; //构造http请求的对象 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl); HttpRequestCachePolicy noCachePolicy = new ...

    myRequest.Proxy = null; 取消代理 framework 3.5以上默认有代理 

    myRequest.Timeout = 60000; 延时

    myRequest.ReadWriteTimeout= 120000; 读写延时

    /// <summary>
            ///  http请求
            /// </summary>
            /// <param name="data">数据</param>
            /// <param name="uri">服务地址 http://localhost:1209/WebService.asmx/RunService</param>
            /// <param name="encoding">编码方式 System.Text.Encoding.UTF8</param>
            /// <param name="type">提交方式 POST</param>
            /// <param name="contentType">数据方式 application/x-www-form-urlencoded</param>
            /// <returns></returns>
            public static string HttpRequest(string data, string uri, Encoding encoding, string type, string contentType)
            {

                if (String.IsNullOrEmpty(type)) type = "POST";
                if (String.IsNullOrEmpty(contentType)) contentType = "application/json";
                //Web访问对象,构造请求的url地址
                string serviceUrl = uri;

                //构造http请求的对象
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
                myRequest.CachePolicy = noCachePolicy;
                myRequest.Headers[HttpRequestHeader.CacheControl] = "no-cache";
                myRequest.Timeout = 60000;
                myRequest.Proxy = null;
                //转成网络流
                byte[] buf = encoding.GetBytes(data);
                //设置
                myRequest.Method = type;
                myRequest.ContentLength = buf.LongLength;
                myRequest.ContentType = contentType;
                using (Stream reqstream = myRequest.GetRequestStream())
                {
                    reqstream.Write(buf, 0, (int)buf.Length);
                }

                HttpWebResponse resp = myRequest.GetResponse() as HttpWebResponse;
                System.IO.StreamReader reader = new System.IO.StreamReader(resp.GetResponseStream(), encoding);
                string message = reader.ReadToEnd();
                reader.Close();
                resp.Close();
                return message;

            }

    展开全文
  • c#调用WebAPIWebService的方法

    千次阅读 2019-10-24 11:50:14
    1.调用WebAPI 方法1.多个参数 /// <summary> /// 使用POST方式发送json字符串请求结果 /// </summary> /// <param name="url">url地址</param> /// <param name="postData"...

    1.调用WebAPI

    方法1.多个参数

     /// <summary>
            /// 使用POST方式发送json字符串请求结果
            /// </summary>
            /// <param name="url">url地址</param>
            /// <param name="postData">需要发送的json字符串</param>
            /// <returns></returns>
            public static string PostUrl1(int cmd, string url, string postData, string postData1)
            {
                string mturl = "";
                string result = "";
               // var request = (HttpWebRequest)WebRequest.Create(url);
                switch (cmd)
                {
                    case 1:
                        
                        string param = HttpUtility.UrlEncode("CheckInfo") + "=" + HttpUtility.UrlEncode(postData);
                        byte[] bytes = Encoding.UTF8.GetBytes(param);
    
                        var request = (HttpWebRequest)WebRequest.Create(url + "/" + "CheckRoute");
                        request.Method = "POST";
                        request.ContentType = "application/x-www-form-urlencoded";
                        request.ContentLength = bytes.Length;
                        int length = bytes.Length;
                        request.ContentLength = length;
                        Stream writer = request.GetRequestStream();
                        writer.Write(bytes, 0, length);
                        writer.Close();
                        var response = (HttpWebResponse)request.GetResponse();
                        //var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
                        //result = responseString.ToString();
    
                        Stream stream = response.GetResponseStream();        //获取响应流
                        XmlTextReader Reader = new XmlTextReader(stream);
                        Reader.MoveToContent();
                        result = Reader.ReadInnerXml();
    
                        break;
                    case 2:
    
                        string param1 = HttpUtility.UrlEncode("TestResult") + "=" + HttpUtility.UrlEncode(postData) + "&" + HttpUtility.UrlEncode("ItemResult") + "=" + HttpUtility.UrlEncode(postData1);
                       
                        byte[] bytes1 = Encoding.UTF8.GetBytes(param1);
    
                        var request1 = (HttpWebRequest)WebRequest.Create(url + "/" + "TestResultUpload");
                        request1.Method = "POST";
                        request1.ContentType = "application/x-www-form-urlencoded";
                        request1.ContentLength = bytes1.Length;
                        int length1 = bytes1.Length;
                        request1.ContentLength = length1;
                        Stream writer1 = request1.GetRequestStream();
                        writer1.Write(bytes1, 0, length1);
                        writer1.Close();
                        var response1 = (HttpWebResponse)request1.GetResponse();
                        //var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
                        //result = responseString.ToString();
    
                        Stream stream1 = response1.GetResponseStream();        //获取响应流
                        XmlTextReader Reader1 = new XmlTextReader(stream1);
                        Reader1.MoveToContent();
                        result = Reader1.ReadInnerXml();
                        break;
                }
    
                //MessageBox.Show(responseString.ToString());
                return result;
            }

    方法2.

            /// <summary>
            /// 使用POST方式发送json字符串请求结果
            /// </summary>
            /// <param name="url">url地址</param>
            /// <param name="postData">需要发送的json字符串</param>
            /// <returns></returns>
            public static string PostUrl1(int cmd,string url, string postData)
            {
                string mturl = "";
                string result = "";
                switch (cmd)
                {
                    case 1:
                        mturl = url + "/checkworkstation";
                        break;
                    case 2:
                        mturl = url + "/savetestresult";
                        break;
                }
    
      
                //json参数
    
                var request = (HttpWebRequest)WebRequest.Create(mturl);
                request.Method = "POST";
                request.ContentType = "application/json";
                byte[] byteData = Encoding.UTF8.GetBytes(postData);
                int length = byteData.Length;
                request.ContentLength = length;
                Stream writer = request.GetRequestStream();
                writer.Write(byteData, 0, length);
                writer.Close();
                var response = (HttpWebResponse)request.GetResponse();
                var responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
                result = responseString.ToString();
                //MessageBox.Show(responseString.ToString());
    
                return result;
            }
    

    2.调用Webervice

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Web.Services.Description;
    using System.CodeDom;
    using Microsoft.CSharp;
    using System.CodeDom.Compiler;
     
    namespace WT
    {
        class WebServiceHelper
        {
            /// <summary<
            /// 实例化WebServices
            /// </summary<
            /// <param name="url"<WebServices地址</param<
            /// <param name="methodname"<调用的方法</param<
            /// <param name="args"<把webservices里需要的参数按顺序放到这个object[]里</param<
            public static object InvokeWebService(string url, string methodname, object[] args)
            {
    
                //这里的namespace是需引用的webservices的命名空间,在这里是写死的,大家可以加一个参数从外面传进来。
                //string @namespace = "WebServiceTest";
                string @namespace = "dsf";
                try
                {
                    //获取WSDL
                    WebClient wc = new WebClient();
                    Stream stream = wc.OpenRead(url + "?WSDL");
                    ServiceDescription sd = ServiceDescription.Read(stream);
                    string classname = sd.Services[0].Name;
                    ServiceDescriptionImporter sdi = new ServiceDescriptionImporter();
                    sdi.AddServiceDescription(sd, "", "");
                    CodeNamespace cn = new CodeNamespace(@namespace);
    
                    //生成客户端代理类代码
                    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(@namespace + "." + classname, true, true);
                    object obj = Activator.CreateInstance(t);
                    System.Reflection.MethodInfo mi = t.GetMethod(methodname);
    
                    return mi.Invoke(obj, args);
                }
                catch
                {
                    return null;
                }
            }
        }
    }

     

    展开全文
  • WebAPIwebservice的区别

    万次阅读 2016-11-26 17:17:10
    WebAPIWebService的区别 webapi用的是http协议,webservice用的是soap协议 webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作 http soap关系 http:是一个客户端和服务器端请求和应答的...

    webapi用的是http协议,webservice用的是soap协议
    webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作

    http soap关系

    http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法

    一http协议的客户端与服务器的交互:由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

    soap 协议:它描述了一种在分散或分布式的环境中如何交换信息的轻量级协议。soap在http协议的基础上,一个基于XML的协议。

    不同:都是底层的通信协议,请求包的格式不同而已,soap包是XML格式,http纯文本格式。

    关系:SOAP是个通信协议, SOAP在HTTP协议的基础上,把编写成XML的REQUEST参数, 放在HTTP BODY上提交个WEB SERVICE服务器(SERVLET,ASP什么的) 处理完成后,结果也写成XML作为RESPONSE送回用户端, 为了使用户端和WEB SERVICE可以相互对应,可以使用WSDL作为这种通信方式的描述文件,利用WSDL工具可以自动生成WS和用户端的框架文件,SOAP具备把复杂对象序列化捆绑到XML里去的能力。
      

    WCF和WEB API我该选择哪个?
      1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF
      2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。
      3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API
      4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API

    SOAP:Simple Object Access Protocol
    简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

    HTTP协议: 应用层
    TCP协议 : 传输层

    HTTP协议详解之响应篇

    在接收和解释请求消息后,服务器返回一个HTTP响应消息。
    

    HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
    1、状态行格式如下:
    HTTP-Version Status-Code Reason-Phrase CRLF
    其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
    状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
    1xx:指示信息–表示请求已接收,继续处理
    2xx:成功–表示请求已被成功接收、理解、接受
    3xx:重定向–要完成请求必须进行更进一步的操作
    4xx:客户端错误–请求有语法错误或请求无法实现
    5xx:服务器端错误–服务器未能实现合法的请求
    常见状态代码、状态描述、说明:
    200 OK //客户端请求成功
    400 Bad Request //客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
    403 Forbidden //服务器收到请求,但是拒绝提供服务
    404 Not Found //请求资源不存在,eg:输入了错误的URL
    500 Internal Server Error //服务器发生不可预期的错误
    503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    eg:HTTP/1.1 200 OK (CRLF)

    2、响应报头后述

    3、响应正文就是服务器返回的资源的内容

    http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

    展开全文
  • webapi/webservice/wcf 项目中添加 Global.asax 在Application_BeginRequest方法中添加如下代码: 复制代码 protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext.Current....
    1. 在webapi/webservice/wcf 项目中添加 Global.asax

    2. 在Application_BeginRequest方法中添加如下代码:

    复制代码

        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            {
                HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
        }
    

    复制代码
    3. 如果是webservice项目的话,在webconfig->system.web 节点下添加如下节点:

    <webServices>
      <protocols>
        <add name="HttpGet" />
        <add name="HttpPost" />
      </protocols>
    </webServices>
    
    1. ajax get方式调用webapi:

    复制代码

    $.ajax({  //ajax get方式调用webapi
                    type: "GET",
                    contentType: 'application/json',
                    url: 'http://localhost:8082/api/Patient/GetPatientInfoById',
                    data: { Id: "4343BF1C-5FD9-4ACE-BD90-26ED29C503C8" },
                    dataType: 'json',
                    success: function (data) {
                        console.log(data);
                    },
                    error: function (xhr) {
                        console.log(xhr.responseText);
                    }
                })
    

    复制代码
    5. ajax POST方式调用webapi

    复制代码

    $.ajax({
                    type: "POST",
                    contentType: 'application/json',
                    url: 'http://localhost:8082/api/Patient/SavePatient',
                    data: JSON.stringify(model),
                    dataType: 'json',
                    success: function (data) {
                        console.log(data);
                    },
                    error: function (xhr) {
                        console.log(xhr.responseText);
                    }
                })
    

    复制代码
    6. ajax get 调用webservice

    复制代码

    $.ajax({      //ajax get 调用webservice
                    type: "GET",
                    contentType: 'application/x-www-form-urlencoded',
                    url: 'http://localhost:8003/PatientService.asmx/GetPatientInfoByEmpiId',
                    data: { empiId: "4343BF1C-5FD9-4ACE-BD90-26ED29C503C8" },        //encodeURI
                    dataType: 'xml',
                    success: function (data) {
                        console.log(data);
                    },
                    error: function (xhr) {
                        console.log(xhr.responseText);
                    }
                })
    

    复制代码
    7. ajax post 调用webservice

    复制代码

    $.ajax({      //ajax post 调用webservice
                    type: "POST",
                    contentType: 'application/x-www-form-urlencoded',
                    url: 'http://localhost:8003/PatientService.asmx/SavePatient',
                    data: { patientInfoString: JSON.stringify(model) },        //encodeURI
                    dataType: 'xml',
                    success: function (data) {
                        console.log(data);
                    },
                    error: function (xhr) {
                        console.log(xhr.responseText);
                    }
                })
    

    复制代码

    1. ajax get 调用wcf

    复制代码

    $.ajax({  //ajax get 调用wcf
                    type: "GET",
                    url: "http://localhost:36634/PatientService.svc/GetPatientInfoByEmpiId?empiId=209530010920",
                    //data: JSON.stringify({ empiId: model.EmpiId }),
                    contentType: "application/json",
                    dataType: "json",
                    processData: true,
                    success: function (data, status, jqXHR) {
                console.log(data);
                    },
                    error: function (xhr,data,b) {
                        console.log(xhr.responseText);
                    }
                });
    

    复制代码

    1. ajax post 调用wcf

    复制代码

    $.ajax({   //ajax post 调用wcf
                    type: "POST",
                    url: "http://localhost:8081/PatientService.svc/SavePatient",
                    data: JSON.stringify({ patientInfoString: JSON.stringify(model) }),
                    contentType: "application/json",
                    dataType: "json",
                    success: function (data, status, jqXHR) {
                        var result = JSON.parse(data.d);
                console.log(data);
                    },
                    error: function (xhr) {
                        console.log(xhr.responseText);
                    }
                });
    
    展开全文
  • webAPI,webService

    2017-08-26 11:22:10
    webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作 http soap关系 http:是一个客户端和服务器端请求和应答的标准(TCP)。http协议其目的是为了提供一种发布和接收htttp页面的方法 一http协议...
  • WebAPIWebService的区别

    千次阅读 2020-10-27 14:54:09
    WebAPI: 1. 无状态,开源,部署在IIS和应用程序上 2. 基于HTTP协议,数据格式为纯文本,Response可以被Web API的MediaTypeFormatter转换成任何格式,常用Json格式 3. 基于HTTP构建的一个轻量级框架。非常适合...
  • webapi用的是http协议,webservice用的是soap协议webapi无状态,相对webservice更轻量级。webapi支持如get,post等http操作 webservice走HTTP协议和80端口而你说的api,用的协议和端口,是根据开发人员定义的这么...
  • 无认证的webapi调用 $uri = "http://www.holidaywebservice.com/HolidayService_v2/HolidayService2.asmx"$proxy = New-WebServiceProxy -Uri $url$proxy.GetCountriesAvailable() #webapi的方法 带WCF的客户端...
  • 最近做了很多项目,也同时使用了mvc的接口,webapi的接口,以及webservice 的接口。先两两对比如下: mvc和webapi区别: 1、MVC是建站的一种框架,倾向于返回用户的页面请求;api倾向于返回用户数据请求; 2、mvc...
  • mvc和webapi区别: 1、MVC是建站的一种框架,倾向于返回用户的页面请求;api倾向于返回用户数据请求; 2、mvc直接继承System.Web.Mvc.Controller; 而webapi继承的是System.Web.Http.ApiController 3、MVC只能部署到...
  • 现在WebApi这么流行,ModelAndView模式的使用应该是会越来越少 其实视具体项目而定,毕竟现在主流的是webapiWebApi的主要目的是前后端分离, 小型项目,单体应用开发效率还是比较高的。 关于各大平台API为什么不...
  • Web Service特征 1、它是基于SOAP协议的...Web API特征(红色标记与WebService区别) 1、这是一个简单的构建HTTP服务的新框架 2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术 3、不像WC...
  • 一、WebService的概念: ... WebService的特点: 1、基于SOAP协议的、数据格式是...二、WebApi的概念: 这是一个简单的构建HTTP服务的新框架、在.net平台上WebApi是一个开源的,理想的,构建REST-ful服务的技术 Web...
  • 拿到这么一个url,被骗说这是一个webservice,要我访问这个ws并取返回值。...因为是外部url,开发环境无法访问,只有部署的环境才能访问,所以调用ws不能直接添加web引用。 偶焦头烂额的在网上找了半天如
  • 如果网络不好或者数据量大的时候,调用webservicewebapi接口函数一直获取不到数据,多久都获取不到, 举个例子, 如果是winform程序查询数据库如果网络不好或数据量大就会导致查的很慢,但最终也能查出来,而...
  • wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递、要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成、解析的事情webapi遵循是rest规范,它只是一种约束,并没有实际的...
  • 这里还想说一句,还是 web api调用简单。 WebService 服务端代码: public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return Hello World; } ...
  • 本课程使用案例讲解,适用于需要快速上手webapi 接口开发的学员,帮助无接口开发基础的学员快速入 适用人群 迫切需要完成接口开发功能学员,接口开发无基础学员,开发兴趣者 课程地址:...
  • WCF、WebAPI、WCFREST、WebService四种数据交换技术 Web Service 基于SOAP协议的,数据格式是XML 只支持HTTP协议 不是开源的,但可以被任意一个了解XML的人使用 只能部署在IIS上 webservice就是远程调用技术,也...
  • 跨域调用WebService

    千次阅读 2018-05-20 00:15:05
    WebService使用还是比较广泛的,这里我们来介绍两种跨域请求调用WebService的方法。首先我们来介绍下什么是WebService,Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它...
  • VB6调用webservice

    2018-12-27 22:06:03
    VB6调用webservice的例子,工程引用了Microsoft soap sdk 3.0 和 xml 6.0 (A vb6.0 program for webservice,using Microsoft soap sdk 3.0 and xml 6.0)
  • 本案例旨在让读者了解如何调用WebserviceAPI进行号码归属地的查询,在网页http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx查得,getMobileCodeInfo其中需要的“号码”参数至少需要7位数字,在本...
  • vb6.0调用webservice详解

    2019-02-20 11:41:19
    网上写vb6.0调用webservice的都写得比较简单, 这个结合实例作了较详细介绍 网上写vb6.0调用webservice的都写得比较简单, 这个结合实例作了较详细介绍
  • pb调用webservice

    2010-07-12 08:59:04
    pb调用webservice说明实例,完整的调用实例,欢迎下载探讨
  • 之前调用 WebService 都是直接添加服务引用,然后调用 ...这里还想说一句,还是 web api调用简单。 WebService 服务端代码:  public class WebServiceDemo : System.Web.Services.WebService {

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,803
精华内容 8,721
关键字:

webapi调用webservice