我WebUtilty.HtmlDecode
用来解码HTML.事实证明它没有正确解码,例如,–
应该解码为" - "字符,但WebUtilty.HtmlDecode
不解码它.HttpUtilty.HtmlDecode
但是,确实如此.
Debug.WriteLine(WebUtility.HtmlDecode("–"));
Debug.WriteLine(HttpUtility.HtmlDecode("–"));
> –
> –
Run Code Online (Sandbox Code Playgroud)
这两者的文档是相同的: 将已经过HTML编码的HTTP传输的字符串转换为已解码的字符串.
为什么它们不同,我应该使用哪一个,如果我切换到WebUtility.HtmlDecode以使" - "正确解码,会发生什么变化?
我有一个使用HttpWebRequest
/生成GET和POST请求的基本类HttpWebResponse
.
我使用我的类登录API,然后请求数据.在Windows 8"Metro"应用程序中,它完全按预期工作.在Windows Phone 8应用程序上,登录似乎成功,但在随后的数据请求中,不会发送任何cookie,服务器会响应,就像客户端未登录一样.
这是类,这个完全相同的代码用于Windows 8应用程序和Windows Phone应用程序:
class Class1
{
CookieContainer cookieJar = new CookieContainer();
CookieCollection responseCookies = new CookieCollection();
public async Task<string> httpRequest(HttpWebRequest request)
{
string received;
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
cookieJar = request.CookieContainer;
responseCookies = response.Cookies;
received = await sr.ReadToEndAsync();
}
}
}
return received;
}
public async Task<string> get(string path)
{
var request = …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序通过HTTPS向API发送用户名和密码.API返回HTTPOnly cookie.
这意味着cookie对代码"不可见",但仍然存在,并将在后续请求中发送到服务器.
的Set-Cookie
报头被从汽提HttpWebResponse.Headers
和cookie不出现在HttpWebResponse.Cookie
S或的HttpWebRequest.CookieContainer
.但是,如果使用相同的请求进行后续请求,则将HttpWebRequest.CookieContainer
它们发送到服务器,但代码无法访问它们.
据我所知,这使得它们无法以任何方式序列化或保存.看来,使这项工作的唯一方法是缓存实际的用户名和密码,每次都重新登录.
有什么我想念的吗?
我有一个与memcache服务器交互的类.我有不同的功能来插入,删除和检索数据.最初每个函数都调用了memcache_connect()
,但这是不必要的,例如:
mc->insert()
mc->get()
mc->delete()
Run Code Online (Sandbox Code Playgroud)
会做三个memcache连接.我通过为类创建一个构造来解决这个问题:
function __construct() {
$this->mem = memcache_connect( ... );
}
Run Code Online (Sandbox Code Playgroud)
然后$this->mem
在需要资源的任何地方使用,因此三个函数中的每一个都使用相同的memcache_connect
资源.
这没关系,但是如果我在其他类中调用类,例如:
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
Run Code Online (Sandbox Code Playgroud)
然后memcache_connect
,当它只需要一个时,它仍然会进行两次调用.
我可以用全局变量做到这一点,但如果我不需要,我宁愿不使用它们.
示例全局实现:
$resource = memcache_connect( ... );
class cache_class
{
function insert() {
global $resource;
memcache_set( $resource , ... );
}
function get() {
global $resource;
return memcache_get( $resource …
Run Code Online (Sandbox Code Playgroud) 我有一个base64字符串,我想将其转换为图像并将Image控件的Source设置为该结果.
通常我会这样做Image.FromStream
,类似于:
Image img;
byte[] fileBytes = Convert.FromBase64String(imageString);
using(MemoryStream ms = new MemoryStream())
{
ms.Write(fileBytes, 0, fileBytes.Length);
img = Image.FromStream(ms);
}
Run Code Online (Sandbox Code Playgroud)
但是,该Image.FromStream
方法在Windows Phone上不存在,并且随意搜索仅显示依赖于该方法的结果.
Visual C++在我的代码中发现内存泄漏,所以我把它缩小到尽可能最简单的测试用例并得到了这个:
#define _CRTDBG_MAP_ALLOC // required
#include <stdlib.h> // to enable MSVC++
#include <crtdbg.h> // memory leak detection
#include <string>
using namespace std;
int main() {
string foo;
_CrtDumpMemoryLeaks();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Detected memory leaks! Dumping objects -> {130} normal block at 0x008748A8, 8 bytes long. Data: B4 F9 44 00 00 00 00 00 Object dump complete.
如果我评论出"string foo"; 它没有检测到任何东西.
我应该以某种方式取消分配foo吗?
我有JSON数据,如下所示:
{
"position":[
{
"top":[
42,
12
]
},
{
"middle":[
10,
15
]
},
{
"bottom":[
5,
201
]
},
{
"axis":[
{
"X":[
901,
51,
67
]
},
{
"Y":[
1474186,
561647
]
},
{
"Z":[
911,
1296501
]
},
15,
20
]
}
],
"validated":true,
"metadata":{
"uri":"/data/complex/",
"session":[
1818,
14
],
"private":false
},
"vists":0,
"ok":true,
"data":{
"10":{
"title":"Alpha",
"author":"Justin X. Ample",
"cover":"/f48hf58.tiff"
},
"901":{
"title":"Tau",
"author":"Felina Blank",
"cover":"/45trthrref.tiff"
}
},
"live":null
}
Run Code Online (Sandbox Code Playgroud)
从这些数据我想显示如下列表:
Alpha, Justin X. Ample …
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的方法,在声明responseObject
使用Task.Factory.FromAsync()时挂起
private async Task<string> post(string url, string postdata)
{
var request = WebRequest.Create(new Uri(url)) as HttpWebRequest;
request.Method = "POST";
// this works
Task<Stream> requestStream = Task<Stream>.Factory.FromAsync(request.BeginGetRequestStream, request.EndGetRequestStream, request);
var sw = new StreamWriter(requestStream.Result);
byte[] data = Encoding.UTF8.GetBytes(postdata);
await requestStream.Result.WriteAsync(data, 0, data.Length);
// this hangs
Task<WebResponse> responseObject = Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, request); // Hangs here
// Doesn't get to here
var responseStream = responseObject.Result.GetResponseStream();
var sr = new StreamReader(responseStream);
string received = await sr.ReadToEndAsync();
return received;
}
Run Code Online (Sandbox Code Playgroud)
如果我手动运行Begin/End方法,它可以正常工作,如下所示:
request.BeginGetRequestStream(async ar …
Run Code Online (Sandbox Code Playgroud) void foo()
{
char *var = kmalloc(1, GFP_KERNEL);
return;
}
Run Code Online (Sandbox Code Playgroud)
此代码将导致内核级内存泄漏,这与用户内存泄漏之间的区别是什么
这是今天采访中的一个问题.我对这个问题做得不好.任何人都可以提出任何想法吗?