(C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误

摘要:
于是又去查看怎么根据http协议调用webservice并做了个无参接口测试,如下:但一做有参的接口调用就提示500错误,查了半天资料,大多数都说是ContentType="application/x-www-form-urlencoded;charset=UTF-8";改成ContentType="text/html";或者在中设置ValidateRequest="false"即可。最后再https://www.jb51.net/article/120015.htm中发现参数是要拼接一下的,这样传递int、string类型的参数都没问题。业务要求传递的是图片二进制转化的string类型数据,结果还是报500错误。

因为工作需要调用WebService接口,查了下资料,发现添加服务引用可以直接调用websevice

参考地址:https://www.cnblogs.com/peterpc/p/4628441.html

如果不添加服务引用又怎么做呢?于是又去查看怎么根据http协议调用webservice并做了个无参接口测试,如下:(C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误第1张

但一做有参的接口调用就提示500错误(远程服务器返回错误(500)内部服务器错误),查了半天资料,大多数都说是ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; 改成ContentType = "text/html";或者在<@Page..%>中设置 ValidateRequest="false" 即可(这里无需修改Content-type)。结果还是报一样的错误。最后再https://www.jb51.net/article/120015.htm中发现参数是要拼接一下的 (param = HttpUtility.UrlEncode("param1") +"="+ HttpUtility.UrlEncode(num1) +"&"+ HttpUtility.UrlEncode("param2") +"="+ HttpUtility.UrlEncode(num2);) ,这样传递int、string类型的参数都没问题。业务要求传递的是图片二进制转化的string类型数据,结果还是报500错误。经过调试对比发现图片二进制数据转化成的string类型数据没有根据url形式传递,而是带有特殊符号的,知道问题所在就好办了,把它转化成有效的url传输数据就行,.net也有现成的封装方法:HttpServerUtility.UrlTokenEncode(bmpBytes),这样500错误也解决了。

测试代码如下:

1   protected void Page_Load(objectsender, EventArgs e)
2 {
3             Bitmap bmp = new Bitmap(System.Drawing.Image.FromFile("C:/Users/TYTD/Desktop/测试样本/ch_DJI_279.jpg"));
4             MemoryStream ms = newMemoryStream();
5 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
6 ms.Flush();
7             //将二进制数据存到byte数组中
8             byte[] bmpBytes1 =ms.ToArray();
9 bmp.Dispose();
10 
11             string bmpBytes = HttpUtility.UrlEncode("bmpBytes") + "=" +HttpServerUtility.UrlTokenEncode(bmpBytes1);
12 
13             string url = "http://192.168.0.28:9800/WebService1.asmx/Send_Image";
14             string a =CallServiceByGet1(url, bmpBytes);
15 
16 }
17         public static string CallServiceByGet1(string strURL,stringa)
18 {
19             var result = string.Empty;
20             //创建一个HTTP请求
21             byte[] byt =Encoding.UTF8.GetBytes(a);
22             HttpWebRequest request =(HttpWebRequest)WebRequest.Create(strURL);
23             request.Method = "POST";
24             request.ContentType = "application/x-www-form-urlencoded";
25             request.ContentLength =byt.Length;
26            
27             request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
28             System.IO.Stream outputStream =request.GetRequestStream();
29             outputStream.Write(byt, 0, byt.Length);
30 outputStream.Close();
31 
32 HttpWebResponse response;
33 Stream responseStream;
34 StreamReader reader;
35             stringsrcString;
36             try
37 {
38                 response = (HttpWebResponse)request.GetResponse();//获取http请求的响应对象
39 }
40             catch(WebException ex)
41 {
42                 returnex.Message;
43 }
44             responseStream =response.GetResponseStream();
45             reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding("UTF-8"));
46             srcString =reader.ReadToEnd();
47             result = srcString;   //返回值赋值
48 reader.Close();
49 
50             returnresult;
51         }

免责声明:文章转载自《(C#)调用Webservice,提示远程服务器返回错误(500)内部服务器错误》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇完美日记:实现高弹性高稳定电商架构mysql排序自段为字符串类型问题解决下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Java反射机制将Bean对象转换成Map(驼峰命名方式 — 下划线命名方式)

packagecom.yunping.asap.core.util; importjava.beans.PropertyDescriptor; importjava.lang.reflect.Field; importjava.lang.reflect.Method; importjava.util.ArrayList; importjava.util....

Golang中使用lua进行扩展

前言 最近在项目中需要使用lua进行扩展,发现github上有一个用golang编写的lua虚拟机,名字叫做gopher-lua.使用后发现还不错,借此分享给大家. 数据类型 lua中的数据类型与golang中的数据类型对应关系作者已经在文档中说明,值得注意的是类型是以L开头的,类型的名称是以LT开头的.golang中的数据转换为lua中的数据就必须转...

C# 反射(Reflection)

反射(Reflection)可以在运行时获 得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。 反射用到的命名空间:    System.Reflection    System.Type    System.Reflection.Assembly using System; using System...

Error:ServiceStack.Redis.RedisResponseException:“invalid password., sPort: 0, LastCommand: ”

ylbtech-Error:ServiceStack.Redis.RedisResponseException:“invalid password., sPort: 0, LastCommand: ” 1.返回顶部 1、 ServiceStack.Redis.RedisResponseException HResult=0x80131500 Message...

lua type 获取 类型

lua中的类型作一小记print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> funct...

SQLHelper

using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; namespace Maticsoft.DBUtility { /// <summary> //...