在WebClient中POST数组(C#/.net)

15 浏览
0 Comments

在WebClient中POST数组(C#/.net)

我有一个.NET应用程序,其中有一个WebRequest,在POST请求中多次添加相同的键,因此在PHP、Java Servlet等中被视为数组。我想重写这个请求,使用WebClient来实现,但是如果我多次调用WebClient的QueryString.Add()方法并传入相同的键,它只会追加新的值,而不是创建一个值的数组。

我使用WebClient的UploadFile()方法来发送请求,因为除了这些元数据外,我还想要上传一个文件。

如何使用WebClient来发送一个值的数组,而不是一个以逗号分隔的单个值?

谢谢

尼克

0
0 Comments

问题的出现原因是WebClient在发送请求时无法正确地将数组格式的数据发送给PHP。解决方法是在发送请求之前,使用扩展方法AddArray来手动将数组格式的数据转换为PHP可以识别的格式。

首先,PHP使用解析器将以数组格式发送的多个值转换为数组。格式为[]。因此,如果想要从$_GET获取一个数组,在发送请求时需要添加这些查询参数:x[key1]和x[key2]。在PHP中,$_GET['x']将是一个包含2个项目的数组:["x"]=> array(2) { ["key1"]=> ["key2"]=> }。

然后,使用WebClientExtension类中的扩展方法AddArray来实现数组格式的数据发送。这个方法会遍历传入的值数组,并通过调用QueryString.Add方法将每个值添加到QueryString中。其中,key的命名方式为key[index],index从0开始递增。

最后,在代码中调用AddArray方法来添加具体的数组数据。可以传入多个参数,每个参数对应一个数组值。也可以手动调用QueryString.Add方法来添加数据。

需要注意的是,AddArray方法中没有包含错误检查等功能,需要根据具体情况进行处理。

总之,通过使用上述方法,可以在WebClient中正确发送数组格式的数据给PHP。值得注意的是,WebClient本身并不支持直接发送数组数据,因此需要手动转换为PHP可以识别的格式。而在PHP中,可以直接接收到数组数据。

0