Asp.net 如何调用web服务表单代码
我有一个web服务,我想从我的代码隐藏页调用它,而不是从源代码调用它。我用谷歌搜索了这个主题,但在大多数链接中,我发现他们使用ajax post从源代码调用web服务Asp.net 如何调用web服务表单代码,asp.net,visual-studio-2010,web-services,c#-4.0,Asp.net,Visual Studio 2010,Web Services,C# 4.0,我有一个web服务,我想从我的代码隐藏页调用它,而不是从源代码调用它。我用谷歌搜索了这个主题,但在大多数链接中,我发现他们使用ajax post从源代码调用web服务 $.ajax({ type: "POST", url: "webservice.asmx/webservice", data: "{}", contentType: "application/json; charset=utf-8",
$.ajax({
type: "POST",
url: "webservice.asmx/webservice",
data: "{}",
contentType: "application/json; charset=utf-8",
cache: false,
dataType: "json",
success: function (result) {
}
});
但是我不想使用这种方法,我只是想从我的代码页面调用webservice。有什么帮助吗?您需要将Web引用添加到项目中 以下是有关如何使用web服务的分步指南:
您需要将Web引用添加到项目中 以下是有关如何使用web服务的分步指南:
您可以使用此代码块
public string CallWebMethod(string url, Dictionary<string, string> dicParameters)
{
try
{
byte[] requestData = this.CreateHttpRequestData(dicParameters);
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.KeepAlive = false;
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.ContentLength = requestData.Length;
httpRequest.Timeout = 30000;
HttpWebResponse httpResponse = null;
String response = String.Empty;
httpRequest.GetRequestStream().Write(requestData, 0, requestData.Length);
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream baseStream = httpResponse.GetResponseStream();
StreamReader responseStreamReader = new StreamReader(baseStream);
response = responseStreamReader.ReadToEnd();
responseStreamReader.Close();
return response;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private byte[] CreateHttpRequestData(Dictionary<string, string> dic)
{
StringBuilder sbParameters = new StringBuilder();
foreach (string param in dic.Keys)
{
sbParameters.Append(param);//key => parameter name
sbParameters.Append('=');
sbParameters.Append(dic[param]);//key value
sbParameters.Append('&');
}
sbParameters.Remove(sbParameters.Length - 1, 1);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(sbParameters.ToString());
}
公共字符串CallWebMethod(字符串url、字典参数)
{
尝试
{
byte[]requestData=this.CreateHttpRequestData(参数);
HttpWebRequest httpRequest=(HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Method=“POST”;
httpRequest.KeepAlive=false;
httpRequest.ContentType=“application/x-www-form-urlencoded”;
httpRequest.ContentLength=requestData.Length;
httpRequest.Timeout=30000;
HttpWebResponse httpResponse=null;
字符串响应=String.Empty;
httpRequest.GetRequestStream().Write(requestData,0,requestData.Length);
httpResponse=(HttpWebResponse)httpRequest.GetResponse();
Stream baseStream=httpResponse.GetResponseStream();
StreamReader responseStreamReader=新的StreamReader(baseStream);
response=responseStreamReader.ReadToEnd();
responseStreamReader.Close();
返回响应;
}
捕获(例外情况除外)
{
抛出新异常(例如消息);
}
}
专用字节[]CreateHttpRequestData(字典dic)
{
StringBuilder sbParameters=新的StringBuilder();
foreach(dic.Keys中的字符串参数)
{
sbParameters.Append(param);//key=>参数名
sbParameters.Append('=');
sbParameters.Append(dic[param]);//键值
sbParameters.Append('&');
}
sbParameters.Remove(sbParameters.Length-1,1);
UTF8Encoding=新的UTF8Encoding();
返回encoding.GetBytes(sbParameters.ToString());
}
您可以使用此代码块
public string CallWebMethod(string url, Dictionary<string, string> dicParameters)
{
try
{
byte[] requestData = this.CreateHttpRequestData(dicParameters);
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Method = "POST";
httpRequest.KeepAlive = false;
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.ContentLength = requestData.Length;
httpRequest.Timeout = 30000;
HttpWebResponse httpResponse = null;
String response = String.Empty;
httpRequest.GetRequestStream().Write(requestData, 0, requestData.Length);
httpResponse = (HttpWebResponse)httpRequest.GetResponse();
Stream baseStream = httpResponse.GetResponseStream();
StreamReader responseStreamReader = new StreamReader(baseStream);
response = responseStreamReader.ReadToEnd();
responseStreamReader.Close();
return response;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
private byte[] CreateHttpRequestData(Dictionary<string, string> dic)
{
StringBuilder sbParameters = new StringBuilder();
foreach (string param in dic.Keys)
{
sbParameters.Append(param);//key => parameter name
sbParameters.Append('=');
sbParameters.Append(dic[param]);//key value
sbParameters.Append('&');
}
sbParameters.Remove(sbParameters.Length - 1, 1);
UTF8Encoding encoding = new UTF8Encoding();
return encoding.GetBytes(sbParameters.ToString());
}
公共字符串CallWebMethod(字符串url、字典参数)
{
尝试
{
byte[]requestData=this.CreateHttpRequestData(参数);
HttpWebRequest httpRequest=(HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Method=“POST”;
httpRequest.KeepAlive=false;
httpRequest.ContentType=“application/x-www-form-urlencoded”;
httpRequest.ContentLength=requestData.Length;
httpRequest.Timeout=30000;
HttpWebResponse httpResponse=null;
字符串响应=String.Empty;
httpRequest.GetRequestStream().Write(requestData,0,requestData.Length);
httpResponse=(HttpWebResponse)httpRequest.GetResponse();
Stream baseStream=httpResponse.GetResponseStream();
StreamReader responseStreamReader=新的StreamReader(baseStream);
response=responseStreamReader.ReadToEnd();
responseStreamReader.Close();
返回响应;
}
捕获(例外情况除外)
{
抛出新异常(例如消息);
}
}
专用字节[]CreateHttpRequestData(字典dic)
{
StringBuilder sbParameters=新的StringBuilder();
foreach(dic.Keys中的字符串参数)
{
sbParameters.Append(param);//key=>参数名
sbParameters.Append('=');
sbParameters.Append(dic[param]);//键值
sbParameters.Append('&');
}
sbParameters.Remove(sbParameters.Length-1,1);
UTF8Encoding=新的UTF8Encoding();
返回encoding.GetBytes(sbParameters.ToString());
}
任何建议请…?生成web服务客户端如果是ASMX,我假设您有可用的WSDL,WSDL.exe可用于生成客户端,或者您可以使用HttpClient创建对该URL的请求。任何建议请…?生成web服务客户端如果是ASMX,我假设您有可用的WSDL,可以使用wsdl.exe生成客户端,也可以使用HttpClient创建对该URL的请求。