DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: dingmingjian123
今日帖子: 20
在线用户: 16
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
男 cenunus (cenunus) ▲▲▲▲▲ -
注册会员
2018/3/18 9:21:31
标题:
怪异的post问题 浏览:580
加入我的收藏
楼主: //此函数告知服务器准备开始上传文件
function TForm1.开始上传文件(请求视频上传地址的响应:视频上传地址信息;文件路径:string): BOOL;
var
  size:Int64;
  请求字符串,back,Url:string;
  JsonStream,ResponseStream:TStringStream;
  MyIdHTTP:TIdHTTP;
  MySSL:TIdSSLIOHandlerSocketOpenSSL;
begin
  Result:=False;
  try
    try
      MyIdHTTP:=TIdHTTP.Create(nil);
      MySSL:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      MyIdHTTP.IOHandler:=MySSL;
      //MyIdHTTP.Request.CustomHeaders.text:='Cookie:' + cookie;
      //MyIdHTTP.HTTPOptions:=MyIdHTTP.HTTPOptions + [hoKeepOrigProtocol];
      //MyIdHTTP.ProtocolVersion:=pv1_1;
      MyIdHTTP.ConnectTimeout:=30000;
      MyIdHTTP.ReadTimeout:=30000;

      请求字符串:='log={';
      请求字符串:=请求字符串 + '"e":"开始上传",';
      请求字符串:=请求字符串 + '"code":0,';
      请求字符串:=请求字符串 + '"ref_id":' + '"' + 请求视频上传地址的响应.视频上传ID + '",';
      请求字符串:=请求字符串 + '"at":' + IntToStr(GetJavaTime(Now)) + ',';   //时间戳
      Sleep(500);
      请求字符串:=请求字符串 + '"timestamp":' + IntToStr(GetJavaTime(Now)) + ',';  //时间戳
      请求字符串:=请求字符串 + '"f":' + '"' + ExtractFileName(文件路径) + '",';
      请求字符串:=请求字符串 + '"url":"https://mp.toutiao.com/profile_v3/xigua/upload-video",';
      请求字符串:=请求字符串 + '"ubs":0,';
      请求字符串:=请求字符串 + '"fs":' + IntToStr(FileSizeByName(文件路径)) + ',';
      请求字符串:=请求字符串 + '"log_id":null,';
      请求字符串:=请求字符串 + '"via":null,';
      请求字符串:=请求字符串 + '"text":"",';
      请求字符串:=请求字符串 + '"ua":"Mozilla/5.0+(Windows+NT+6.1;+Win64;+x64;+rv:58.0)+Gecko/20100101+Firefox/58.0",';
      请求字符串:=请求字符串 + '"cookie":' + '"' + cookie + '",';
      请求字符串:=请求字符串 + '"log_data":[],';
      请求字符串:=请求字符串 + '"username":' + '"' + 头条号名称 + '",';
      请求字符串:=请求字符串 + '"mid":' + 头条号ID + '}';
      //mmo2.Lines.Add(请求字符串);
      JsonStream:=TStringStream.Create(请求字符串,TEncoding.UTF8);
      ResponseStream:=TStringStream.Create('',TEncoding.UTF8);
      Url:='https://i.snssdk.com/video/fedata/1/pgc/' + 请求视频上传地址的响应.视频上传ID;

      MyIdHTTP.Request.Accept:='application/json, text/javascript, */*; q=0.01';
      MyIdHTTP.Request.AcceptEncoding:='deflate';
      MyIdHTTP.Request.AcceptLanguage:='zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2';
      MyIdHTTP.Request.Connection:='keep-alive';
      MyIdHTTP.Request.ContentType:='application/x-www-form-urlencoded; charset=UTF-8';
      MyIdHTTP.Request.Host:='i.snssdk.com';
      MyIdHTTP.Request.CustomHeaders.Values['Origin'] := 'https://mp.toutiao.com';
      MyIdHTTP.Request.CustomHeaders.Values['Pragma'] := 'no-cache';
      MyIdHTTP.Request.Referer:='https://mp.toutiao.com/profile_v3/xigua/upload-video';
      MyIdHTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0';
      MyIdHTTP.Request.CacheControl:='no-cache';

      MyIdHTTP.Post(Url,JsonStream,ResponseStream);
      back:=UnicodeToAnsi(ResponseStream.DataString);
      mmo2.Lines.Add('开始上传文件的返回信息:' + back);
      if Pos('success',back)>0 then
      begin
        Result:=True;
      end;
    except
      Result:=False;
    end;
  finally
    MySSL.Free;
    MyIdHTTP.Free;
    JsonStream.Free;
    ResponseStream.Free;
  end;
end;

我对自己的程序抓包后发现此函数函数的http请求头中缺少Connection: keep-alive,但是我代码明明设置了,附抓包对比。
此帖子包含附件:
PNG 图像
大小:2.96M
----------------------------------------------
作者:
男 pankangkang (aaaa) ▲▲▲▲△ -
注册会员
2018/9/27 14:18:17
1楼: 怪异的 函数名称 变量名称

很明显问题在于 发送的内容编码问题  json格式是错误的
json不支持ansi
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行62.5毫秒 RSS