几天前,我开始使用Compact Framework 3.5在C#中在C#中运行的条形码扫描仪编码。我很难让我的异步httpwebrequest做应该做的事情。(特别是因为它是CF3.5 ..)现在有点工作...但是需要1-3分钟才能完成请求。
private void xmlRequestButton_Click(object sender, EventArgs e)
{
System.Uri myUri = new System.Uri("http://www.mydomain.de/someFolder/index.php");
HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(myUri);
myRequest.Method = "POST";
myRequest.ContentType = "text/html";
myRequest.SendChunked = true;
myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest);
}
private static void GetRequestStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
Stream postStream = myRequest.EndGetRequestStream(callbackResult);
string postData = "testparam=testvalue";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
postStream.Write(byteArray, 0, postData.Length);
postStream.Close();
myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
}
private static void GetResponsetStreamCallback(IAsyncResult callbackResult)
{
HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Console.WriteLine(responseString);
streamResponse.Close();
streamRead.Close();
response.Close();
allDone.Set();
}
每次访问我的网站服务日志。它只是回应"成功"。起初,我认为WebRequest根本不起作用。但是,当我不停地停止调试一段时间时,我意识到它有效,但花了很长时间。该设备甚至将答案"成功"记录到控制台。那么怎么可能需要这么长时间呢?我错过了什么吗?
我的目标是该设备扫描一些条形码,然后联系Web服务,该网络服务回馈产品名称和其他信息。
为什么使用此SCU客户端?是否没有在此CE5设备上预安装的合适的一个(哪种型号?)?
您使用的服务器是通过Internet还是Interanet使用的?看起来您有TCP/IP DNS或路由问题。请尝试使用Vxutils(剑桥软件 - 免费一个)ping等来验证连接。
您知道您的PC可能被设备用于Internet连接(ActiveSync/WMDC Passhru)。请尝试TCP/IP(和您的应用程序),而无需Active ActiveSync/WMDC连接。您仍然可以在首次部署/调试会话开始后进行调试,因为VS纪念设备的IP地址并将其用于以下会话,即使设备未连接到USB(WMDC)。另请参阅Visual Studio SmartDevice远程调试。
如果您找不到网络问题,请返回您的详细发现。