Java中DataOutputStream.writeUTF(String)在c#中的替代
2012-07-15 18:21
197 查看
java
public static String webPost(String msg,String myurl){
String ret = "";
HttpURLConnection conn = null;
DataOutputStream dos = null;
DataInputStream dis = null;
try {
URL url = new URL(myurl);
conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
dos = new DataOutputStream(conn.getOutputStream());
dos.writeUTF(msg);
dos.flush();
int code = conn.getResponseCode();
System.out.println("code " + code);
if (code == HttpURLConnection.HTTP_OK){
dis = new DataInputStream(conn.getInputStream());
ret = dis.readUTF();
// System.out.println(ret);
}
// conn.disconnect();
}catch (Exception e) {
e.printStackTrace();
}finally{
if (dis != null)
{
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (dos != null)
{
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (conn != null)
{
conn.disconnect();
}
}
return ret;
}
---------------------------------------------------------
c#
/// <summary>
/// 向指定URL使用POST方法发送数据的例程,本函数不进行错误处理
/// </summary>
/// <param name="strURL">URL字符串</param>
/// <param name="bytSend">要发送的二进制数据</param>
/// <param name="SendProgress">发送数据时的进度处理</param>
/// <param name="AcceptProgress">接受数据时的进度处理</param>
/// <returns>接受到的二进制数据</returns>
private static byte[] HttpPostData(
string strURL ,
byte[] bytSend )
{
// 发送数据
System.Net.HttpWebRequest myReq=(System.Net.HttpWebRequest)System.Net.WebRequest.Create(strURL);
myReq.Method = "POST" ;
System.IO.Stream myStream = myReq.GetRequestStream();
int iCount = 0 ;
int utflen = bytSend.Length;
byte a = (byte) ((utflen >> 8) & 0xFF);
byte b = (byte) ((utflen >> 0) & 0xFF);
byte[] bytSendUTF = new byte[utflen+2];
bytSendUTF[0] = a;
bytSendUTF[1] = b;
Array.Copy(bytSend,0,bytSendUTF,2,utflen);
while( iCount < bytSendUTF.Length )
{
if( iCount + 1024 > bytSendUTF.Length)
{
myStream.Write(bytSendUTF, iCount , bytSendUTF.Length - iCount );
iCount = bytSendUTF.Length ;
}
else
{
myStream.Write(bytSendUTF , iCount , 1024);
iCount += 1024;
}
}//while
myStream.Close();
// 接受数据
System.Net.HttpWebResponse myRes = null;
myRes = myReq.GetResponse() as System.Net.HttpWebResponse ;
myStream = myRes.GetResponseStream();
System.IO.MemoryStream myBuf = new System.IO.MemoryStream(1024);
byte[] bytBuf = new byte[1024];
int ContentLength = (int)myRes.ContentLength ;
int AcceptLength = 0 ;
while(true)
{
int iLen = myStream.Read(bytBuf,0,1024);
if(iLen ==0)
break;
myBuf.Write(bytBuf,0,iLen);
AcceptLength += iLen ;
if( AcceptLength > ContentLength )
ContentLength = AcceptLength ;
}//while
myStream.Close();
myRes.Close();
myReq.Abort();
byte[] bytReturn = myBuf.ToArray();
myBuf.Close();
return bytReturn;
}// public static byte[] HttpPostData()
}
public static String webPost(String msg,String myurl){
String ret = "";
HttpURLConnection conn = null;
DataOutputStream dos = null;
DataInputStream dis = null;
try {
URL url = new URL(myurl);
conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
dos = new DataOutputStream(conn.getOutputStream());
dos.writeUTF(msg);
dos.flush();
int code = conn.getResponseCode();
System.out.println("code " + code);
if (code == HttpURLConnection.HTTP_OK){
dis = new DataInputStream(conn.getInputStream());
ret = dis.readUTF();
// System.out.println(ret);
}
// conn.disconnect();
}catch (Exception e) {
e.printStackTrace();
}finally{
if (dis != null)
{
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (dos != null)
{
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (conn != null)
{
conn.disconnect();
}
}
return ret;
}
---------------------------------------------------------
c#
/// <summary>
/// 向指定URL使用POST方法发送数据的例程,本函数不进行错误处理
/// </summary>
/// <param name="strURL">URL字符串</param>
/// <param name="bytSend">要发送的二进制数据</param>
/// <param name="SendProgress">发送数据时的进度处理</param>
/// <param name="AcceptProgress">接受数据时的进度处理</param>
/// <returns>接受到的二进制数据</returns>
private static byte[] HttpPostData(
string strURL ,
byte[] bytSend )
{
// 发送数据
System.Net.HttpWebRequest myReq=(System.Net.HttpWebRequest)System.Net.WebRequest.Create(strURL);
myReq.Method = "POST" ;
System.IO.Stream myStream = myReq.GetRequestStream();
int iCount = 0 ;
int utflen = bytSend.Length;
byte a = (byte) ((utflen >> 8) & 0xFF);
byte b = (byte) ((utflen >> 0) & 0xFF);
byte[] bytSendUTF = new byte[utflen+2];
bytSendUTF[0] = a;
bytSendUTF[1] = b;
Array.Copy(bytSend,0,bytSendUTF,2,utflen);
while( iCount < bytSendUTF.Length )
{
if( iCount + 1024 > bytSendUTF.Length)
{
myStream.Write(bytSendUTF, iCount , bytSendUTF.Length - iCount );
iCount = bytSendUTF.Length ;
}
else
{
myStream.Write(bytSendUTF , iCount , 1024);
iCount += 1024;
}
}//while
myStream.Close();
// 接受数据
System.Net.HttpWebResponse myRes = null;
myRes = myReq.GetResponse() as System.Net.HttpWebResponse ;
myStream = myRes.GetResponseStream();
System.IO.MemoryStream myBuf = new System.IO.MemoryStream(1024);
byte[] bytBuf = new byte[1024];
int ContentLength = (int)myRes.ContentLength ;
int AcceptLength = 0 ;
while(true)
{
int iLen = myStream.Read(bytBuf,0,1024);
if(iLen ==0)
break;
myBuf.Write(bytBuf,0,iLen);
AcceptLength += iLen ;
if( AcceptLength > ContentLength )
ContentLength = AcceptLength ;
}//while
myStream.Close();
myRes.Close();
myReq.Abort();
byte[] bytReturn = myBuf.ToArray();
myBuf.Close();
return bytReturn;
}// public static byte[] HttpPostData()
}
相关文章推荐
- java中DataOutputStream.writeUTF(String)在c#中的替代
- C# ToString() 格式化
- C#中StringReader和StringWriter的使用
- C# String中null, string.empty与""区别
- C# - String.Empty vs ""
- C#中ArrayList和string,string[]数组的转换
- C#中char[]与string之间的转换
- C#新手入门代码 在string字符串中找到指定字符的最大,最小索引值
- C# String 字符串一些关键理解
- C#中的DBNull、Null和String.Empty解释
- c#语言基础编程—string
- C# .net core Assembly使用GetEntryAssembly替代GetExecutingAssembly
- C/C++/C#是否支持基于string的switch-case??
- c# 数据绑定之 DataFormatString 格式
- c# 中几个关于string问题
- C#中Brush、Color、String相互转换
- 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)
- C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
- c#实现大数相加(字符串) string AddBig(string a, string b)
- c#中byte[]和string的转换