“远程服务器返回错误: (417) Expectation failed“解决方法

在用c#做zhaopin.com网站自动登陆的时候,一直返回“远程服务器返回错误: (417) Expectation failed”这个提示,在检查确认代码没有问题后,google了一下找到了解决方案:

在代码的最开始加入如下一句:
System.Net.ServicePointManager.Expect100Continue = false;

或在配置文件中加入(示例代码中的粗体文字):

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<system.net>
<settings>
<servicePointManager expect100Continue=”false”/>
</settings>
</system.net>
</configuration>

这个异常源自HTTP1.1协议的一个规范: 100(Continue)
100(Continue)状态代码的解释
允许客户端发request消息body之前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。
客户端在Request头部中包含
Expect:100-continue
Server接到后 如果回100(continue)这个状态代码,客户端就继续发request body。
这个设置是Http1.1才有。

转载自 1000SEO

### Doris Stream Load 中 'Expectation Failed' 错误的原因 在使用 Python 进行 Apache Doris 的 Stream Load 操作时,如果遇到 `'Expectation Failed'` 错误,通常是因为客户端在发送请求时启用了 `Expect: 100-continue` 机制,而 Doris 的 HTTP 服务端没有正确响应此机制,导致请求失败。 `Expect: 100-continue` 是一种 HTTP 协议定义的机制,客户端在发送请求体之前会先发送一个 `Expect: 100-continue` 请求头,等待服务端返回 `100 Continue` 响应后再继续发送数据。如果服务端不支持或未正确响应此机制,客户端会抛出 `'Expectation Failed'` 错误。 ### 解决方法 避免 `'Expectation Failed'` 错误的最直接方法是禁用 `Expect: 100-continue` 机制。可以通过在请求头中显式设置 `Expect` 字段为空,或者通过配置请求会话避免自动添加该头部[^2]。 以下是一个禁用 `Expect: 100-continue` 的示例代码: ```python import requests import json url = "http://127.0.0.1:7030/api/database/table/_stream_load" headers = { "Authorization": "Basic base64encoded_auth", "Content-Type": "application/json", "label": "unique_label", "Expect": "" # 禁用 Expect: 100-continue } data = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}] response = requests.put(url, headers=headers, data=json.dumps(data)) ``` 此外,还可以通过使用 `requests` 的 `Session` 对象,并配置其适配器来控制请求行为,从而避免自动添加 `Expect: 100-continue` 头部[^2]: ```python from requests.adapters import HTTPAdapter session = requests.Session() adapter = HTTPAdapter(max_retries=3) session.mount('http://', adapter) session.mount('https://', adapter) response = session.put(url, headers=headers, data=json.dumps(data)) ``` 这种方式可以更细粒度地控制请求行为,适用于需要多次发送 Stream Load 请求的场景。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值