通过TCP发送字符串(VB.NET)
我使用TCP客户端成功连接到Onlineic API,但在尝试登录时遇到错误 下面是我的代码(用户名和密码由Onlineic提供) 我在此行收到错误消息:stream.Write(data,0,data.Length) System.NullReferenceException未由用户代码处理通过TCP发送字符串(VB.NET),vb.net,tcpclient,Vb.net,Tcpclient,我使用TCP客户端成功连接到Onlineic API,但在尝试登录时遇到错误 下面是我的代码(用户名和密码由Onlineic提供) 我在此行收到错误消息:stream.Write(data,0,data.Length) System.NullReferenceException未由用户代码处理 消息=对象引用未设置为对象的实例。 Source=App\u Web\4023pkvf StackTrace: 位于D:\Documents and Settings\sa\My Documents\Vi
消息=对象引用未设置为对象的实例。
Source=App\u Web\4023pkvf StackTrace: 位于D:\Documents and Settings\sa\My Documents\Visual Studio中的\u Default.Login() 2010\WebSites\onlineic_vb1\Default.aspx.vb:line 51 在默认按钮2处,单击D:\Documents and Settings\sa\My Documents\Visual Studio中的(对象发送者,事件参数e) 2010\WebSites\onlineic_vb1\Default.aspx.vb:第243行 在System.Web.UI.WebControls.Button.OnClick(EventArgs e)中 位于System.Web.UI.WebControl.Button.RaisePostBackEvent(String eventArgument) 在System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 事件(参数) 位于System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 位于System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
内部异常: 你应该试试这个:
Dim HashedPass As String = CreateMd5Hash(testPassword)
Dim guid__1 As Guid = Guid.NewGuid()
Dim chksum As String = CreateMd5Hash(testID + HashedPass + guid__1.ToString() + "login")
Dim sb As New StringBuilder()
sb.Append("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?>")
sb.Append("<request>")
sb.Append("<category>client</category>")
sb.Append("<action>Login</action>")
sb.Append("<params>")
sb.Append("<param name=""clid"">" + testID + "</param>")
sb.Append("</params>")
sb.Append("<cltrid>" + guid__1.ToString() + "</cltrid>")
sb.Append("<chksum>" + chksum + "</chksum>")
sb.Append("</request>")
Dim responseData As [String] = [String].Empty
Dim data As [Byte]()
data = System.Text.Encoding.ASCII.GetBytes(sb.ToString())
stream.Write(data, 0, data.Length)
Dim bytes As Int32 = stream.Read(data, 0, data.Length)
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
bytes = stream.Read(data, 0, data.Length)
responseData += System.Text.Encoding.ASCII.GetString(data, 0, bytes)
Return responseData.Contains("Command completed successfully")
Dim HashedPass As String=CreateMd5Hash(testPassword)
Dim guid__1作为guid=guid.NewGuid()
Dim chksum As String=CreateMd5Hash(testID+HashedPass+guid\uu 1.ToString()+“login”)
使某人成为新的架线工
某人加上(“”)
某人加上(“”)
某人(“委托人”)
某人附加(“登录”)
某人加上(“”)
sb.追加(“+testID+”)
某人加上(“”)
sb.Append(“+guid\uuu 1.ToString()+”)
sb.追加(“+chksum+”)
某人加上(“”)
Dim responseData为[String]=[String]。空
Dim数据为[字节]()
data=System.Text.Encoding.ASCII.GetBytes(sb.ToString())
stream.Write(数据,0,数据.长度)
Dim字节为Int32=stream.Read(数据,0,数据.长度)
responseData=System.Text.Encoding.ASCII.GetString(数据,0,字节)
字节=stream.Read(数据,0,数据.长度)
responseData+=System.Text.Encoding.ASCII.GetString(数据,0,字节)
返回responseData.Contains(“命令成功完成”)
在哪一行抛出异常?第51行:stream.Write(data,0,data.Length)用于引用API:看起来“stream”在该点为空。在登录()之前是否运行Connect()?是的,我使用Connect()成功连接,然后尝试登录()。我将此代码从其他C代码转换而来。
Line 49: Dim data As [Byte]()
Line 50: data = System.Text.Encoding.ASCII.GetBytes(sb.ToString())
Line 51: stream.Write(data, 0, data.Length)
Line 52: Dim bytes As Int32 = stream.Read(data, 0, data.Length)
Line 53: responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
Dim HashedPass As String = CreateMd5Hash(testPassword)
Dim guid__1 As Guid = Guid.NewGuid()
Dim chksum As String = CreateMd5Hash(testID + HashedPass + guid__1.ToString() + "login")
Dim sb As New StringBuilder()
sb.Append("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""no""?>")
sb.Append("<request>")
sb.Append("<category>client</category>")
sb.Append("<action>Login</action>")
sb.Append("<params>")
sb.Append("<param name=""clid"">" + testID + "</param>")
sb.Append("</params>")
sb.Append("<cltrid>" + guid__1.ToString() + "</cltrid>")
sb.Append("<chksum>" + chksum + "</chksum>")
sb.Append("</request>")
Dim responseData As [String] = [String].Empty
Dim data As [Byte]()
data = System.Text.Encoding.ASCII.GetBytes(sb.ToString())
stream.Write(data, 0, data.Length)
Dim bytes As Int32 = stream.Read(data, 0, data.Length)
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
bytes = stream.Read(data, 0, data.Length)
responseData += System.Text.Encoding.ASCII.GetString(data, 0, bytes)
Return responseData.Contains("Command completed successfully")