一串长度超过get限制的字符串怎么传给web服务器快疯了!!!

baidu_27259743 2015-05-09 05:33:57
希望能用到webclient类 我需要传送的字符串超过get限制 没办法用 aspx?str= 的方式来传递,只能用post来传送,我看到webclient有一个方法是uploadstring标明是用来上载字符串,但是我不知道应该怎么写 winform是客户端 webform是服务器,真的快疯了。讲下需求winform端的代码 和webform端的代码 新人 没什么分分 全给了 希望大神能给我解答 帮助 麻烦大家了
...全文
1087 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
那个发饰 2015-05-12
  • 打赏
  • 举报
回复
引用 24 楼 baidu_27259743 的回复:
引用 23 楼 a1030260075 的回复:
我之前上传多张图片也遇到了这个问题,get超出长度了,改用post,用了“;”作为分隔符,拼成一个大的String再上传
我想知道你怎么让这个字符串可以在服务器上使用,可能你需要服务器按照你的分隔符把字符串再分割开来,就是服务器能够有一个string的变量等于上传的这个字符串
我是写前台移动端的,分隔符都是跟后台商量好的,后台怎么处理我就不清楚了
  • 打赏
  • 举报
回复
引用 9 楼 baidu_27259743 的回复:
懵懵懂懂 你的意思是把字符串“现在”当做一个对象 然后传给服务器吗?将服务器的page_load里面的东西换成TestWebClientUpload里面的东西 就能实现传送字符串吗?
咳,看来我是给你的例子写复杂了。 你可以把“上传一个对象”的例子改为这个: 上传一个字符串

var p = "kakdfa8938ksdfa faks23423 我是一个男人 哦也 alsdkfassadf";
var data = new WebClient().UploadData("http://localhost:2171/TestWebClientUpload.ashx", Encoding.UTF8.GetBytes(p));
var result = Encoding.UTF8.GetString(data);
然后看看服务器端程序结果。
程序猿老曾 2015-05-11
  • 打赏
  • 举报
回复
post多好啊!!不用考虑这么多事情~~~~get的话不仅限长,有时还会遇到中文乱码的问题呢
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 15 楼 FoxDave 的回复:
[quote=引用 14 楼 baidu_27259743 的回复:] [quote=引用 12 楼 FoxDave 的回复:] 表单提交就是post uploadstring方法中有个参数是method,你传入post试试
Webclient.UploadString ("http://localhost:61490/savegoods.aspx","POST",picturestr ) 这样如果的的话 那么服务器要怎么写去接收字符串呢 [/quote] 在传入页面的后台接收啊[/quote]我知道。。。但是该用的request.form 还是 request.querystring 还是别的?form[]里面的参数应该写什么。。我不懂啊 试了多次 我希望能把字符串进行输出 才能代表我收到这个字符串了吧 比如把字符串放到页面的一个textbox上面之类 或者返回给客户端进行message.show 我真的不知道怎么做了
Justin-Liu 2015-05-11
  • 打赏
  • 举报
回复
引用 14 楼 baidu_27259743 的回复:
[quote=引用 12 楼 FoxDave 的回复:] 表单提交就是post uploadstring方法中有个参数是method,你传入post试试
Webclient.UploadString ("http://localhost:61490/savegoods.aspx","POST",picturestr ) 这样如果的的话 那么服务器要怎么写去接收字符串呢 [/quote] 在传入页面的后台接收啊
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 12 楼 FoxDave 的回复:
表单提交就是post uploadstring方法中有个参数是method,你传入post试试
Webclient.UploadString ("http://localhost:61490/savegoods.aspx","POST",picturestr ) 这样如果的的话 那么服务器要怎么写去接收字符串呢
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 12 楼 FoxDave 的回复:
表单提交就是post uploadstring方法中有个参数是method,你传入post试试
我是这样写的 Webclient.UploadString ("http://localhost:61490/savegoods.aspx","POST",picturestr ) 这样不行吗
Justin-Liu 2015-05-11
  • 打赏
  • 举报
回复
表单提交就是post uploadstring方法中有个参数是method,你传入post试试
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 10 楼 FoxDave 的回复:
只能用post啊
能不能给写代码 我不知道怎么post 为什么直接用webclient.uploadstring不行呢
Justin-Liu 2015-05-11
  • 打赏
  • 举报
回复
只能用post啊
天空丶蒋 2015-05-11
  • 打赏
  • 举报
回复
百度 post ...
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 23 楼 a1030260075 的回复:
我之前上传多张图片也遇到了这个问题,get超出长度了,改用post,用了“;”作为分隔符,拼成一个大的String再上传
我想知道你怎么让这个字符串可以在服务器上使用,可能你需要服务器按照你的分隔符把字符串再分割开来,就是服务器能够有一个string的变量等于上传的这个字符串
那个发饰 2015-05-11
  • 打赏
  • 举报
回复
引用 22 楼 baidu_27259743 的回复:
引用 21 楼 sp1234 的回复:
OK 。。我理解你的意思,也确实发现服务器接收到了这个字符串。。。但能不能再麻烦您一下,这个字符串我传给了服务器 是要去操作的。。比如切割,服务器收到了这个字符串,那么这个字符串怎么变成服务器上一个可以操作的变量呢....???不是要切割的代码,而是要能将这个字符串变成服务器上的变量的做法代码 麻烦了
我之前上传多张图片也遇到了这个问题,get超出长度了,改用post,用了“;”作为分隔符,拼成一个大的String再上传
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 21 楼 sp1234 的回复:
OK 。。我理解你的意思,也确实发现服务器接收到了这个字符串。。。但能不能再麻烦您一下,这个字符串我传给了服务器 是要去操作的。。比如切割,服务器收到了这个字符串,那么这个字符串怎么变成服务器上一个可以操作的变量呢....???不是要切割的代码,而是要能将这个字符串变成服务器上的变量的做法代码 麻烦了
  • 打赏
  • 举报
回复
好吧 :-(,我再给你解释一下测试服务器端程序的代码
    public void ProcessRequest(HttpContext context)
    {
        using (var sr = new System.IO.StreamReader(context.Request.InputStream))
        {
            var data = sr.ReadToEnd();
            context.Response.ContentType = "text/plain";
            context.Response.Write(string.Format("参数={0}",data));
        }
    }
这里,data变量是保存收到的客户端传来的字符串(可以很长、很长.....的字符串),然后原样输出给客户端。所以你在客户端的程序发现访问服务器得到了“回声”,一字不差,这就对了! 你也可以动手调试这3行代码,分析了解一下到底“服务器获得字符串参数”功能是运用.net的什么功能来实现的。
baidu_27259743 2015-05-11
  • 打赏
  • 举报
回复
引用 18 楼 sp1234 的回复:
咳,看来我是给你的例子写复杂了。 你可以把“上传一个对象”的例子改为这个: 上传一个字符串

var p = "kakdfa8938ksdfa faks23423 我是一个男人 哦也 alsdkfassadf";
var data = new WebClient().UploadData("http://localhost:2171/TestWebClientUpload.ashx", Encoding.UTF8.GetBytes(p));
var result = Encoding.UTF8.GetString(data);
然后看看服务器端程序结果。
按照前面的写了一个.ashx文件,然后客户端用了你上面的方法写的上传字符串,并且我将result利用messagebox导出来 显示的结果是我要上传字符串,但是服务器端还是没有显示参数=“我要的字符串”啊 难道是我的打开方式不对吗?那怎么说明我上传成功了啊?
本拉灯 2015-05-11
  • 打赏
  • 举报
回复
这改成POST 不成么,UPload也是POST呀。
baidu_27259743 2015-05-10
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
接收普通的字符串参数,可以使用这样的一个 ashx 为例
<%@ WebHandler Language="C#" Class="TestWebClientUpload" %>

using System;
using System.Web;

public class TestWebClientUpload : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        using (var sr = new System.IO.StreamReader(context.Request.InputStream))
        {
            var data = sr.ReadToEnd();
            context.Response.ContentType = "text/plain";
            context.Response.Write(string.Format("参数={0}",data));
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}
而假设我们要把一个 .net对象序列化之后上传,例如对象类的定义是
public class MyTestType
{
    public DateTime x;
    public string y;
}
上传一个对象可以写
var obj = new MyTestType
{
    x = DateTime.Now,
    y = "现在"
};
var p = JsonConvert.SerializeObject(obj);
var data = new WebClient().UploadData("http://localhost:2171/TestWebClientUpload.ashx", Encoding.UTF8.GetBytes(p));
var result = Encoding.UTF8.GetString(data);
懵懵懂懂 你的意思是把字符串“现在”当做一个对象 然后传给服务器吗?将服务器的page_load里面的东西换成TestWebClientUpload里面的东西 就能实现传送字符串吗?
  • 打赏
  • 举报
回复
url长度超出,那你不可能绕过这个东西,就算你可以压缩字符串,那又如何?服务器不可能认识压缩过的东西,如果服务器能配合你改,那还管get什么事情,服务器直接改成支持post
tcmakebest 2015-05-09
  • 打赏
  • 举报
回复
POST在楼主面前难道是座翻不过的大山么? 只要能够完成目的,多走几步路权当是锻炼身体吧. 从URL传递内容和直接传送字符串肯定是有些不同的,只要双方遵守同一规范即可.
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧