小编Ton*_*ina的帖子

为什么是RestSharp AddHeader("Accept","application/json"); =到项目列表?

我在C#中有这个Windows Phone 8项目,我正在使用RestSharp 104.4.0向服务器发出请求.服务器只接受"Accept"类型的"application/json".我的代码调用请求:

var client = new RestClient(_jsonBaseUrl + someURL)
{
    Authenticator = new HttpBasicAuthenticator(someUsername, somePassword)
};

var request = new RestRequest(Method.POST);

UTF8Encoding utf8 = new UTF8Encoding();
byte[] bytes = utf8.GetBytes(json);
json = Encoding.UTF8.GetString(bytes, 0, bytes.Length);

request.RequestFormat = DataFormat.Json;
request.AddHeader("Accept", "application/json");
request.AddBody(json);
request.Parameters.Clear();
request.AddParameter("application/json", json, ParameterType.RequestBody);

client.ExecuteAsync<UserAccount>(request, response =>
{
    if (response.ResponseStatus == ResponseStatus.Error)
    {
        failure(response.ErrorMessage);
    }
    else
    {
        success("done");
    }
});
Run Code Online (Sandbox Code Playgroud)

"json"变量是一个JSON字符串.

如你所见,我已将我的接受类型设置为AddHeader("Accept","application/json"); 但由于一些有线的原因,服务器接收它作为接受类型:"接受":"application/json,application/xml,text/json,text/x-json,text/javascript,text/xml"

我需要做什么,以确保服务器获得的唯一接受类型是"接受":"application/json"?

任何形式的帮助将不胜感激.

c# json restsharp windows-phone windows-phone-8

5
推荐指数
1
解决办法
1万
查看次数

使用此技巧从外部访问受保护的成员,但这是否有效?

如果我有以下课程:

class Foo
{
protected:
    int i;
public:
    Foo() : i(42) {}
};
Run Code Online (Sandbox Code Playgroud)

当然,我无法从外部访问受保护的成员,但我可以做这个小技巧:首先我创建一个继承Foo的新类:

class Foo2 : public Foo
{
public:
    int GetI() { return i; }
};
Run Code Online (Sandbox Code Playgroud)

现在,每当我有一个Foo实例或指向此类实例的指针时,我都可以通过强制转换访问受保护的成员(因为我不使用任何其他成员):

Foo *f = new Foo();
Foo f2;
std::cout << ((Foo2*)f)->GetI() << std::endl;
std::cout << (reinterpret_cast<Foo2&>(f2)).GetI() << std::endl;
Run Code Online (Sandbox Code Playgroud)

我明白为什么会这样,但是会不会有任何不良后果?编译器不介意,没有任何运行时检查.

c++

4
推荐指数
1
解决办法
372
查看次数

如何从结果创建并发:: task?

我想创建一个已从给定结果中完成的新任务.我目前的解决方法是:

return concurrency::task<T>([]{return result;});
Run Code Online (Sandbox Code Playgroud)

有更好的吗?

问题出在以下代码中:

concurrency::task<bool> foo()
{
    if (smth)
        // the result is 
        return (foo_other() && foo_other2()).then([](std::vector<bool> results) {...});

    //return false;
    return concurrency::task<bool>([]{return false;});
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的函数是异步的,它依赖于另一个异步函数.但有时我可以退出应用程序,例如,如果异步任务已经完成.在这种情况下,我需要返回一个返回指定结果的可持续任务.

c++ task c++11 ppl

3
推荐指数
1
解决办法
2197
查看次数

为什么编译器不帮助我们使用类型特征而不是诉诸语言怪癖?

类型特征很酷,我使用它们,因为几年前它们起源于提升.但是,当你看看它们的实现时(查看"如何is_base_of工作?" StackOverflow线程).

为什么编译器不会在这里帮忙?例如,如果你想检查某个类是否是另一个类的基础,编译器已经知道了,为什么它不能告诉我们?这将使概念更容易实现和使用.你可以在那里使用语言结构.

我不确定,但我猜它会提高一般性能.这就像向编译器寻求帮助,而不是C++语言.

我怀疑主要原因听起来像"我们需要保持向后兼容性"并且我同意,但为什么编译器不会更积极地生成通用模板化代码?

c++ std type-traits

1
推荐指数
1
解决办法
145
查看次数

标签 统计

c++ ×3

c# ×1

c++11 ×1

json ×1

ppl ×1

restsharp ×1

std ×1

task ×1

type-traits ×1

windows-phone ×1

windows-phone-8 ×1