2013-03-09 65 views
1

我的开发人员正在努力的图像后,以他的Web服务这样的:POST的base64数据

http://consec.dev.domain.com/Services/ActivityService.svc/SubmitImage?userId=8D428BF6-51F0-43F6-947D-7E19A6A7F4BD&fileName=feels-bad.png&fileContent=iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg== 

这是base64编码的图像(这一个恰好是一个红点,但图像我们将使用大得多)

当他试图将它张贴他得到一个:

HTTP Error 414. The request URL is too long. 

他告诉我的,因为我的IIS配置是错误的。我告诉他它的代码。有人可以对此有所了解,或者指示我们开始寻找答案吗?谢谢

+0

他通过GET参数发送难以置信的大量数据,这是一个坏主意。确实可以通过更改IIS的配置来解决这个问题,但更好的解决方案是首先实际发布数据(他不这么做)。 – 2013-03-09 19:18:36

+0

那就是我的想法。 Hes告诉我他在POST和GET之间来回切换,但我仍然将它看作是一个url。所以如果base64数据在URL中,即使他说他在发布它,它总是作为一个GET来进行,对吗? – 2013-03-09 19:21:42

+1

这就是URL(和414错误)所暗示的,是的。他需要从查询字符串中获取数据。 – 2013-03-09 19:22:07

回答

2

不要POST URL中的数据,利用帖子正文并在那里提交。这是获取提交的大量数据的唯一方法。

0

他的代码是错误的。这就是HTTP支持POST请求的原因。

请注意,如果有POST请求,您仍然可以将数据放入网址中。要做一个合适的POST,你需要创建一个URL来定义发布的位置,并将你想要的数据放入请求的正文中。 GET的

实施例:

GET /some/place.php?var1=value 

POST的实施例:

POST /some/place.php 

var1=value 

然而,它是有效的做到这一点:

POST /some/place.php?var1=value 

var2=value2 

(这些实施例剪断为清楚起见,你将不得不发送一些标题以及在POST

0

首先它是一个get而不是一个post的http请求。其次,这个错误是由webserver返回的。但这是不好的设计?它实际上应该是一个表单按钮,使用post raher提交字段比构建的可点击get url

+0

我认为这是一个GET,即使他告诉我它的POST。该错误肯定是由Web服务器返回的。我们将使用提交按钮而不是可点击的网址提交图片。 – 2013-03-09 19:25:28