Foxtable(狐表)用户栏目专家坐堂 → [讨论]移动开发后台接收数据


  共有2416人关注过本帖树形打印复制链接

主题:[讨论]移动开发后台接收数据

帅哥哟,离线,有人找我吗?
yjh2002
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
[讨论]移动开发后台接收数据  发帖心情 Post By:2018/1/12 8:54:00 [显示全部帖子]

做了个移动开发项目,后台日志中发现有一些这样的提交:

------WebKitFormBoundaryNI6YDDsfjQvnsNLu
Content-Disposition: form-data; name="username"
出现这种情况,前台提交的数据就无法接收,请问这是什么情况,怎么解决?


 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 9:22:00 [显示全部帖子]

写的后台接收数据的日志,但后台接收数据不止这些,出现这种内容后没就没数据了。在网上查好象是苹果系统提交的问题。

 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 9:31:00 [显示全部帖子]

1、台前是一个手机数据提交页面,就是十几个数据框。

2、正常情况下的内容在日志里如下

2018-01-10 15:00:31.2100
path=default.htm
HttpMethod=POST
UserName=9137060279153645XX
s001=0
s003=28.67
s005=12.76
s006=12.84
s007=293.45
s010=12.29
s011=8.19
s014=2.05
s999=370.25
tjbz=123

3、有些用户说提交了,但查询内容还是0,我在后台日志中发现有这样的日志内容。

2018-01-11 14:21:53.7782
path=password.htm
HttpMethod=POST
UserName=91370600737242418p
------WebKitFormBoundaryAqNuaVX4JqhrNKoA
Content-Disposition: form-data; name="username"

91370600737242418p
------WebKitFormBoundaryAqNuaVX4JqhrNKoA
Content-Disposition: form-data; name

后面没有提交数据

即使用户提交的都是0,我这个标志tjbz=123是个隐藏内容,也应该出现。

4、后台就是个httpsever,不需要人工操作。

5、这个跟重启程序无关

6、我上网查询,似乎是苹果浏览器带的表头部分,好象需要单独解读。

7、我想问一下咱们的foxtable如何处理这种问题?


 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 9:47:00 [显示全部帖子]

日志代码是直接炒咱们的示例里面的,内容如下:

    Dim v  = Args(0)
    Dim msg As String
    If Typeof v Is Exception Then '如果是Exception的异常类型,则递归获取所有的异常堆栈
        Do While v IsNot Nothing
        msg &= v.Message & Environment.NewLine & v.StackTrace & Environment.NewLine
        v = v.InnerException
        Loop
    Else '其它情况只能传入错误的文本内容
        msg = v
    End If
    Dim logstxt As String =ProjectPath & "Mmsglog" & Date.Today & ".txt"
    Output.Logs("AppLogging").Add(Format( Date.Now,"yyyy-MM-dd HH:mm:ss.ffff") & vbCrLf & msg)
    Output.Logs("AppLogging").Save(logstxt,True) '日志位于当前项目目录里
    Output.Logs("AppLogging").Clear


 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 10:03:00 [显示全部帖子]

主要是绝大多数用户是正常的,300多个用户,只有很少数几个出现这种情况,应该不会是代码问题。

后面会逐渐增加到上千个用户,你说的1和2可能性比较大。刚才上数据库看了,那个用户之前提交上数据了,那么日志里面的内容有可能是你说的第二种情况吧。

 

软件里如何获取用户的IP地址?这样我好监控是否恶意用户。

 


 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 10:07:00 [显示全部帖子]

还有个问题,就是一开始很多企业报的是空数据,但他们的会计说报的有数,但再进去就是0了。后来让他们不用wifi用流量报就好了,应该是企业wifi对提交数据有拦截。但也只是怀疑,请问你们遇到这种情况了吗?

 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 11:36:00 [显示全部帖子]

提交成功了,但日志里没有提交的数据,前台也显示提交成功。但改用流量就好了。

 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 13:37:00 [显示全部帖子]

不是一点数据没,而是没有用户输入的数据,这样我无法确定用户本月报的是空表是数据没传上来,

 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 13:40:00 [显示全部帖子]

这是前台输入和接收的全部代码

 

Dim e As RequestEventArgs = args(0)
Dim UserName As String = args(1)
Dim wb As new weui
wb.title="数据采集"
wb.AppendHTML("<script src='/lib/calc.js'></script>") '引入脚本文件
If e.PostValues.count = 0 Then
    Dim qr As DataRow = DataTables("qyxx").find("qydm='" & UserName & "'")
    Dim qymc As String =""
    If qr IsNot Nothing
        qymc=qr("qymc")
    End If
    wb.AddForm("","form1","default.htm")
    With wb.AddInputGroup("form1","ipg1",qymc)
        With .AddInputCell("ic0") '通过InputCell增加输入框
             .AddLabel("ls01","税种",0) '增加标签,0显
             .AddLabel("ls02","本月预计",1) '增加标签,0显
             .AddLabel("ls03","上年同期",2) '增加标签,0显
         End With
         Dim i As Integer=1
         Dim icn As String ="ic"
         Dim sr As List (of DataRow) = DataTables("sbxx").sqlselect("qydm='" & UserName & "' and bz=0")
         For Each r As DataRow In sr
             With .AddInputCell(icn & i) '通过InputCell增加输入框
                  .Attribute = "" '
                  .AddLabel("ls" & i,r("szmc"),0) '增加标签,0显示在左边
                  Dim bq As String = "s" & r("szdm")
                  With .AddInput(bq.Trim,"number",1)
                       .PlaceHolder= "万元"  '增加输入框,1表示显示在中间
                       .Step = "0.01"
                       If r("byyj")<>0 Then
                            .value=r("byyj")
                       End If
                       If bq="s999" Then
                            .Readonly=True
                       End If
                  End With
'                    .AddInput("nssn1","number",2).PlaceHolder= "上年同期"  '增加输入框,1表示显示在中间
                  .AddLabel("sn" & i,r("sntq"),2) '增加标签,0显
             End With
             i+=1
        Next
        .AddHiddenValue("tjbz","123")
    End With
    With wb.AddButtonGroup("form1","btg1")
         .Add("btn1", "提交", "submit")
         .Add("btn2", "退出", "submit").FormAction="exit.htm"
    End With
    e.WriteString(wb.Build) '生成网页
Else
    Dim cjs As String =""
    For Each key As String In e.PostValues.Keys
        If key <> "s999" Then
            cjs=cjs+key+";"
        End If
    Next
    Dim sr As List (of DataRow) = DataTables("sbxx").sqlselect("qydm='" & UserName & "' and bz=0")
    DataTables("sbxx").SQLReplaceFor("byyj",0,"qydm='" & UserName & "' and bz=0")
    Dim zje As Decimal = 0
    For Each r As DataRow In sr
        Dim csz As String="s" & r("szdm")
        If cjs.Contains(csz.Trim) Then
            Dim sbje As Decimal = val(e.PostValues(csz.Trim))
            zje=zje+sbje
            DataTables("sbxx").SQLReplaceFor("byyj",sbje,"jl=" & r("jl"))
        End If
    Next
    DataTables("sbxx").SQLReplaceFor("byyj",zje,"qydm='" & UserName & "' And bz=0 And szdm='999'")
    DataTables("qyxx").SQLReplaceFor("sbje",zje,"qydm='" & UserName & "'")
    DataTables("qyxx").SQLReplaceFor("lrlb",1,"qydm='" & UserName & "'")
    With wb.AddMsgPage("","msgpage","保存成功", "") '增加订单成功提示信息
        .AddButton("btn1","返回","exit.htm")
    End With
    e.WriteString(wb.Build) '生成网页
End If


 回到顶部
帅哥哟,离线,有人找我吗?
yjh2002
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:287 积分:2066 威望:0 精华:0 注册:2017/4/24 13:47:00
  发帖心情 Post By:2018/1/12 14:52:00 [显示全部帖子]

 For Each r As DataRow In sr
        Dim csz As String="s" & r("szdm")
        If cjs.Contains(csz.Trim) Then
            Dim sbje As Decimal = val(e.PostValues(csz.Trim))
            zje=zje+sbje
            DataTables("sbxx").SQLReplaceFor("byyj",sbje,"jl=" & r("jl"))
        End If
    Next
这一段就是保存啊,因为最后有个s999是合计,在前台通过js计算的,但有时候不准确,所以后台要重新计算合计数。这个cjs就是把提交过来的不是s999的保存到字符cjs中。保存时把所有不是s999的内容保存DataTables("sbxx").SQLReplaceFor("byyj",sbje,"jl=" & r("jl"))。后面的代码是计算出的合计数再单独保存。

 回到顶部
总数 14 1 2 下一页