下面是我使用curl的代码,它并没有像HTML表单那样真正重定向:
import string
def func(strg):
return ''.join(c for c in strg if c in string.printable[:-5])
大家好,
上面是我使用 php package : curl/curl编写的示例代码,
但请放心,我期待任何答案,使用纯curl的答案也可以,并且只要使用php语言,其他答案也可以。
我要实现的目标是如何进行API调用,就像HTML表单一样。为什么我要实现这一目标?因为在HTML表单中,我们需要单击“提交”按钮,所以我知道javascript可以触发,但我正在尝试使用完全后端的语言来构建自己的包。
我已经尝试过在互联网上搜索问题,但是没有一个是我所期望的。
下面是我的简单html表单,它确实重定向到所需的url:
import pandas as pd
df = pd.read_csv(fileName)
df['description'] = df['description'].apply(func)
上面是可工作的HTML表单示例,它被重定向到该操作的URL路径,但是在curl中,我无法实现它,因此,如何使用curl或任何其他方式来实现它。
答案 0 :(得分:0)
设置Content-Type
头并不表示curl将使用哪种格式发送帖子数据。如果给CURLOPT_POSTFIELDS一个数组,则curl将使用multipart/form-data
格式发送数据,无论您在Content-Type标头中放置什么内容。您的卷曲代码很可能以Multipart / form-data格式发送数据,而$ params是一个数组,并且由于您告诉服务器this is application/x-www-form-urlencoded
,因此服务器绑定将multipart / form-data数据解析为{{ 1}},
(这是一种完全不兼容的格式),并且根本无法理解数据。如果要将邮政数据数组转换为application/x-www-form-urlencoded
格式,请使用application/x-www-form-urlencoded
函数,例如
http_build_query
答案 1 :(得分:0)
我找到了使用curl进行POST重定向的答案:
$params = ['payee_id' => 1 , 'amount' => 300];
$curl = curl_init('http://someurl.com/silent/pay');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($params));
curl_exec($curl);
如果需要更多说明,curl将遵循POST方法的重定向,请转到here。