我想要做的仅仅是将Wcf服务的Json响应提供给Wpf WebControl。我已经测试了Wcf服务,并且可以在REST客户端中看到Json响应。Awesomium Wpf WebControl从wcf服务读取json响应
我基本上已经尝试了两种方法(感谢慷慨开发谁在这里分享自己的代码): -
下面是我ResourceInterceptor如何构建ResourceResponse。从文档ResourceResponse只是一个原始数据块和指定的MIME类型的包装。这应该意味着我应该能够将我的回应与contentType一起传递,并且awesomium应该能够识别。但我的Ajax请求所有的土地由在 “错误” 的jqXHR没有内容: -
private ResourceResponse readWebResponse(HttpWebRequest webreq)
{
HttpWebRequest.DefaultMaximumErrorResponseLength = 1048576;
HttpWebResponse webresp = null;// = webreq.GetResponse() as HttpWebResponse;
var memStream = new MemoryStream();
Stream webStream;
try
{
webresp = (HttpWebResponse)webreq.GetResponse();
webStream = webresp.GetResponseStream();
byte[] readBuffer = new byte[4096];
int bytesRead;
while ((bytesRead = webStream.Read(readBuffer, 0, readBuffer.Length)) > 0)
memStream.Write(readBuffer, 0, bytesRead);
}
catch (WebException e)
{
var r = e.Response as HttpWebResponse;
webStream = r.GetResponseStream();
memStream = Read(webStream);
var wrongLength = memStream.Length;
}
memStream.Position = 0;
StreamReader sr = new StreamReader(memStream);
string webStreamContent = sr.ReadToEnd();
byte[] responseBuffer = Encoding.UTF8.GetBytes(webStreamContent);
// Initialize unmanaged memory to hold the array.
int responseSize = Marshal.SizeOf(responseBuffer[0]) * responseBuffer.Length;
IntPtr pointer = Marshal.AllocHGlobal(responseSize);
try
{
// Copy the array to unmanaged memory.
Marshal.Copy(responseBuffer, 0, pointer, responseBuffer.Length);
return ResourceResponse.Create((uint)responseBuffer.Length, pointer,webresp.ContentType);
}
finally
{
// Data is not owned by the ResourceResponse. A copy is made
// of the supplied buffer. We can safely free the unmanaged memory.
Marshal.FreeHGlobal(pointer);
webStream.Close();
}
}
我的Ajax请求很简单,如下: -
$.ajax({
url:urlBase+'/list'
,success: function(dt){deferred.resolve(dt);alert('hurray')},
error: function(jqXHR, textStatus, errorThrown){
alert('oyei oyei something went wrong'+JSON.stringify(jqXHR));
var err = eval('(' + xhr.responseText + ')');
alert(err.Message);}
});
我得到的是: -
{ “readyState的” 0 “responseText的”: “”,状态:0, “状态文本”: “错误”}
- 我使用Userscripts办法从这里也试过: - http://answers.awesomium.com/questions/2289/can-i-use-userscripts-or-greasemonkey-scripts-in-a.html
在我的JavaScript请求我简单地称为上面这样的工具: -
uScriptHelper.xmlHttpRequest({url:urlBase+'/list', onload=function(){return(this.responseText);}});
我可以看到这个responseText正在被Userscripts设置。但是我的ajax响应仍然是一样的 - 错误导致所有空参数。我在这里做错了什么?