您的位置:首页 > 编程语言 > Java开发

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()

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: