小编Shu*_*pli的帖子

HttpClient检索所有标头

目前,我正在研究API包装器.如果我把一个坏的Consumer Key,服务器将返回Status403 Forbidden在标题.它还将传递自定义标头.我如何实际检索这些自定义标头?

这是从服务器接收的响应.

Cache-Control: private
Date: Wed,  01 May 2013 14:36:17 GMT
P3P: policyref="/w3c/p3p.xml",  CP="ALL CURa ADMa DEVa OUR IND UNI COM NAV INT STA PRE"
Server: Apache/2.2.23 (Amazon)
Status: 403 Forbidden
X-Error: Invalid consumer key.
X-Error-Code: 152
X-Powered-By: PHP/5.3.20
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

我需要检索X-ErrorX-Error-Code.目前,我正在使用HttpClient类来处理请求.如果我在VS Studio 2012的Quick Watch下观看标题响应,我可以像这样找到它

((System.Net.Http.Headers.HttpHeaders)(response.Headers)).headerStore["X-Error-Code"].ParsedValue

有没有其他方法可以做到这一点?

编辑: headerStore无法通过代码访问,因为这是私有字段.我只能通过Quick Watch窗口访问它.

这是我的请求片段:

var response = await _httpClient.PostAsync("/v3/oauth/request", content);
Run Code Online (Sandbox Code Playgroud)

c# http http-headers dotnet-httpclient windows-phone-8

24
推荐指数
4
解决办法
3万
查看次数

从任务中回调主线程

由于我不了解线程,所以我有一个问题.我想在背景和背景方法中做一些事情我想在某些条件下切换回主线程,否则在后台工作.我该如何实现这一功能?我正在使用UI类中的StartSyncThread调用(c#)

async void StartSyncThread()
{
    await DoSyncAsync();
}

Task DoSyncAsync()
{
    return Task.Run(() => DoSync());            
}
Run Code Online (Sandbox Code Playgroud)

在DoSync方法中,我想切换回主线程,以便我可以更改UI.请给我一个简单的解决方案来做到这一点.提前致谢!

c# windows-phone windows-phone-8

13
推荐指数
2
解决办法
2万
查看次数

Docker命名卷未更新

我对如何使用命名数据卷(不是数据容器)感到困惑.

我有一个命名数据卷app_src,/usr/src/app使用docker compose文件挂载.但是,在对我的源代码(本地)进行更改后,构建映像不会更新卷.

我正在构建这样的图像,

docker-compose -f development.yml build并运行它docker-compose -f development.yml up -d.

为了确认卷没有改变,我附加到正在运行的容器中,并且确实没有更新源代码.

这是我的docker撰写文件development.ymlDockerfile我的web服务.版本:'2'

services:
  web:
    restart: always
    build: ./web
    expose:
      - "8000"
    volumes:
      - app_src:/usr/src/app
    links:
      - postgres:postgres
    env_file: development.env
    command: ./start_web.sh

volumes:
   app_src: {}


FROM python:3.4.4

WORKDIR /usr/src/app
RUN rm -rf /usr/src/app/*
COPY . /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

我可以通过像这样安装主机来使它工作,

volumes:
    - ./web/src:/usr/src/app
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu 16.04上运行docker 1.11.2.我的理解错了吗?我确实看了一下文档,但是我能找到任何能很好地解释音量的东西.

docker docker-compose docker-volume

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

不能借用可变性,因为它也被借用为不可变的

我正在学习Rust,我不明白为什么这不起作用.

#[derive(Debug)]
struct Node {
    value: String,
}

#[derive(Debug)]
pub struct Graph {
    nodes: Vec<Box<Node>>,
}

fn mk_node(value: String) -> Node {
    Node { value }
}

pub fn mk_graph() -> Graph {
    Graph { nodes: vec![] }
}

impl Graph {
    fn add_node(&mut self, value: String) {
        if let None = self.nodes.iter().position(|node| node.value == value) {
            let node = Box::new(mk_node(value));
            self.nodes.push(node);
        };
    }

    fn get_node_by_value(&self, value: &str) -> Option<&Node> {
        match self.nodes.iter().position(|node| node.value == *value) {
            None => None, …
Run Code Online (Sandbox Code Playgroud)

reference rust

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

Docker Postgres不在docker-entrypoint-initdb.d中运行初始化文件

基于Docker的Postgres 文档,我可以在其中创建任何*.sql文件/docker-entrypoint-initdb.d并使其自动运行。

我有init.sql包含CREATE DATABASE ronda;

在我的docker-compose.yaml,我有

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - /usr/src/app/static
  env_file: .env
  command: /usr/local/bin/gunicorn ronda.wsgi:application -w 2 -b :8000

nginx:
  restart: always
  build: ./nginx/
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  build: ./postgres/
  volumes_from:
    - data
  ports:
    - "5432:5432"

data:
  restart: always
  build: ./postgres/
  volumes:
    - /var/lib/postgresql
  command: "true"
Run Code Online (Sandbox Code Playgroud)

还有我的postgres Dockerfile,

FROM …
Run Code Online (Sandbox Code Playgroud)

postgresql docker docker-compose

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

INotifyPropertyChanged实现,绑定不起作用

我正在学习为WP7(芒果)创建一个应用程序,并以某种方式解决这个问题.这不是我的应用程序的实际代码,而是同一问题的简化版本.我认为主要是因为缺乏对绑定如何运作的深刻理解.

XAML.

<TextBlock x:Name="PageTitle" Text="{Binding Title}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
Run Code Online (Sandbox Code Playgroud)

代码背后.

private MainPageViewModel viewModel;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        viewModel = new MainPageViewModel();
        this.DataContext = viewModel;
    }

    private void ApplicationBarIconButton_Click(object sender, EventArgs e)
    {
        viewModel.GenerateTitle();
    }
Run Code Online (Sandbox Code Playgroud)

和我的ViewModel.

        private static int counter = 0;

    private string title;
    public string Title
    {
        get { return title; }
        set
        {
            if (title != value)
            {
                title = value;
                OnPropertyChanged("Title");
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# data-binding inotifypropertychanged windows-phone-7

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