如果是WINDOWS程序可以用用WebClient类,可以发送POST/GET/PUT请求,
http:// 211.154.223.116:3000/tysy.jsp? CorpID=xxxxxx &Phone=13012345678 & Data=17200310101
这样的话用GET方法就可以实现如果是WEB程序都话直接刷新几次就可以啦
http:// 211.154.223.116:3000/tysy.jsp? CorpID=xxxxxx &Phone=13012345678 & Data=17200310101
这样的话用GET方法就可以实现如果是WEB程序都话直接刷新几次就可以啦
解决方案 »
- 跪求 ASP页面与ASP.NET页面之间的传值,不能在URL里面显示出来。
- 如何获取RowCommand事件中当前行索引
- 为什么不能打开aspx设计页面
- 看了几个月了,发表一下自己最近的一些想法 大伙来看看
- 哪位大哥有中文取词的正则表示式程序吗,帮帮小弟
- 【XML】怎么样在文本框输入一下,Table就添加一个<TR><TD></TD></TR>,输入完之后就成批上传到数据库?
- 晕死:常常出现这样的错误,“/nikkosee”应用程序中的服务器错误。
- static 的函数中如何使用Session
- 请问怎么解决??从客户端(FreeTextBox1="<EM><U>6</U></EM>")中检测到有潜在危险的 Request.Form 值。
- ListBox的问题,路过者进入看看
- 怎样控制textbox,我只要数字。???
- 下载过来的动网论坛里面的管理员密码在哪找
仁兄有什么高见阿?
http://www.20cn.net/ns/wz/comp/data/20020812005500.htm
/// GET方式发送请求
/// </summary>
/// <param name="requestUrl">请求地址</param>
/// <returns>响应字符串</returns>
public string SendRequest( string requestUrl )
{
HttpWebRequest httpWebRequest = ( HttpWebRequest ) WebRequest.Create( requestUrl );
httpWebRequest.Method = "GET";
WebResponse webResponse = httpWebRequest.GetResponse();
StreamReader responseStream = new StreamReader( webResponse.GetResponseStream(), System.Text.Encoding.UTF8 );
_responseStr = responseStream.ReadToEnd();
webResponse.Close();
responseStream.Close();
return _responseStr;
}
一下解决方法: 可编译运行看见结果,不过对于XML流的分析还有有误,由于时间关系,小生就拿返回的数据流当字符串处理了:
using System;
using System.Net;
using System.Threading;
using System.Text;
using System.IO;
using System.Xml;namespace BJXMLTest
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
// RequestState 类用于通过
// 异步调用传递数据
public class RequestState
{
const int BUFFER_SIZE = 1024;
public StringBuilder RequestData;
public byte[] BufferRead;
public HttpWebRequest Request;
public Stream ResponseStream;
// 创建适当编码类型的解码器
public Decoder StreamDecode = Encoding.Default.GetDecoder(); public RequestState()
{
BufferRead = new byte[BUFFER_SIZE];
RequestData = new StringBuilder("");
Request = null;
ResponseStream = null;
}
} // ClientGetAsync 发出异步请求
class ClientGetAsync
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
const int BUFFER_SIZE = 1024;
public static void Main(string[] args)
{
//修改或给此字符串作循环,以连续的发送和接受数据流
string HttpUrl="http://211.154.223.116:3000/tysy.jsp?CorpID=1&Phone=13012345678&Data=17200310101";
// 从命令行获取 URI
Uri HttpSite = new Uri(HttpUrl); // 创建请求对象
HttpWebRequest wreq = (HttpWebRequest) WebRequest.Create(HttpSite); // 创建状态对象
RequestState rs = new RequestState(); // 将请求添加到状态,以便它可以被来回传递
rs.Request = wreq; // 发出异步请求
IAsyncResult r = (IAsyncResult) wreq.BeginGetResponse(new AsyncCallback(RespCallback), rs); // 将 ManualResetEvent 设置为 Wait,
// 以便在调用回调前,应用程序不退出
allDone.WaitOne();
} private static void RespCallback(IAsyncResult ar)
{
// 从异步结果获取 RequestState 对象
RequestState rs = (RequestState) ar.AsyncState; // 从 RequestState 获取 HttpWebRequest
HttpWebRequest req = rs.Request; // 调用 EndGetResponse 生成 HttpWebResponse 对象
// 该对象来自上面发出的请求
HttpWebResponse resp = (HttpWebResponse) req.EndGetResponse(ar); // 既然我们拥有了响应,就该从
// 响应流开始读取数据了
Stream ResponseStream = resp.GetResponseStream(); // 该读取操作也使用异步完成,所以我们
// 将要以 RequestState 存储流
rs.ResponseStream = ResponseStream; // 请注意,rs.BufferRead 被传入到 BeginRead。
// 这是数据将被读入的位置。
IAsyncResult iarRead = ResponseStream.BeginRead(rs.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), rs);
}
private static void ReadCallBack(IAsyncResult asyncResult)
{
// 从 asyncresult 获取 RequestState 对象
RequestState rs = (RequestState)asyncResult.AsyncState; // 取出在 RespCallback 中设置的 ResponseStream
Stream responseStream = rs.ResponseStream;
// 此时 rs.BufferRead 中应该有一些数据。
// 读取操作将告诉我们那里是否有数据
int read = responseStream.EndRead( asyncResult ); if (read > 0)
{
// 准备 Char 数组缓冲区,用于向 Unicode 转换
Char[] charBuffer = new Char[BUFFER_SIZE];
// 将字节流转换为 Char 数组,然后转换为字符串
// len 显示多少字符被转换为 Unicode
int len = rs.StreamDecode.GetChars( rs.BufferRead, 0, read, charBuffer, 0 );
String str = new String( charBuffer, 0, len); // 将最近读取的数据追加到 RequestData stringbuilder 对象中,
// 该对象包含在 RequestState 中
rs.RequestData.Append(str);
// 现在发出另一个异步调用,读取更多的数据
// 请注意,将不断调用此过程,直到
// responseStream.EndRead 返回 -1
IAsyncResult ar = responseStream.BeginRead( rs.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), rs);
}
else
{
if(rs.RequestData.Length>1)
{
// 所有数据都已被读取,因此将其显示到控制台
string strContent;
strContent = rs.RequestData.ToString(); //Console.WriteLine(strContent.Trim().ToString()); string MsgData="Phone="+MidStr("phone",strContent)+"\n"+"Data="+MidStr("data",strContent)+"\n"+"Data-Id="+MidStr("data-id",strContent); Console.WriteLine(MsgData.ToString());
//==================================以XML方式处理流时,有问题.所以我把返回值当字符串处理的==============================
// XmlNodeReader nreader = null;
// try
// {
// XmlDocument exampledoc = new XmlDocument();
// exampledoc.Load(strContent.Trim().ToString());
// XmlNode name = exampledoc.SelectSingleNode
// ("/csjx-service/data"); ///单个读取节点值
// if(name!= null)
// {
// nreader = new XmlNodeReader(name);
// while(nreader.Read())
// {
// Console.Write (nreader.Value);
// Console.Write (nreader.Name+" ");
// }
// }
// }
// finally
// {
// if(nreader!=null)
// nreader.Close();
// }
} // 关闭响应流
responseStream.Close(); // 设置 ManualResetEvent,以便主线程可以退出
allDone.Set();
}
return;
}
/// <summary>
/// 返回两个字符串节点之间的字符串
/// </summary>
/// <param name="NodeStr">字符节点</param>
/// <param name="StreamStr">数据流</param>
/// <returns>返回的提取的字符串</returns>
public static string MidStr(string NodeStr,string StreamStr)
{
int StarStr = (StreamStr.Trim()).IndexOf("<"+NodeStr.Trim()+">");
int StopStr = (StreamStr.Trim()).IndexOf("</"+NodeStr.Trim()+">");
string MidStr = (StreamStr.Trim()).Substring(StarStr+NodeStr.Length+2,StopStr-StarStr-NodeStr.Length-2);
return MidStr;
}
}
}