Foxtable(狐表)用户栏目专家坐堂 → httprequest事件中,屏蔽代码可以弹开网页,if怎么写?


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

主题:httprequest事件中,屏蔽代码可以弹开网页,if怎么写?

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
httprequest事件中,屏蔽代码可以弹开网页,if怎么写?  发帖心情 Post By:2017/3/15 17:45:00 [显示全部帖子]

httprequest事件如下:  红框处的代码, 原示例中是  If (wechatserv  IsNot Nothing )  Then  ***
但是文字可以弹出,网页不能正常打开,后来我改成了 

 If (wechatserv  IsNot Nothing  And xo("MsgType")<>"event" )   Then ***
但网页仍然不能弹出,

请问此处的if条件应该怎么判断post到 httpserver的是 消息(text,voice,等), 还是网页?    



图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看




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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/15 19:50:00 [显示全部帖子]



在if 前增加   msgbox(e.plainText)  及 msgbox(xo("msgtype"))  
在公众号中点开网页,弹出值分别为:


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


event


如果对公众号发消息,则弹出如下提示:


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

及text
[此贴子已经被作者于2017/3/15 19:53:36编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/15 20:11:00 [显示全部帖子]

但是把 红框内的 if 代码屏蔽后是可以正常弹出的呀

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/16 8:24:00 [显示全部帖子]

httprequest中必须有处理 CCintroduction.htm 的代码呀,  我的意思,我分两次测试,一次是点击弹出 CCintroduction.htm 网页(如果屏蔽红框处的代码可以正常弹出网页,不屏蔽,手机访问网页时,网页就直接回复一个success) 
第二次测试 发送消息"lis" ,如果屏蔽就没有自动回复消息,  如果不屏蔽 就可以自动回复对应的消息。

httprequest的代码如下:

try

    Select Case e.host
        Case "192.168.1.153","127.0.0.1","ycyysf.viphk.ngrok.org"
            Dim dr As DataRow
            Dim url As String
            Dim wechatserv As WeChat.WeChatPublicNo
            If e.Path > "" Then
                url = "http://" & e.host & "/" & e.Path.replace("\","/").replace("'","''").replace("""","""""") & "/"

                wechatserv = Functions.Execute("WeChat_GetServerByUrl",url) '查询是否有此地址的微信公众号
            End If

                 Dim xo As XObject = XObject.Parse(e.PlainText)
                ' msgbox(xo("MsgType"))
           msgbox(e.PlainText)
           msgbox(xo("MsgType"))
              If (wechatserv  IsNot Nothing  And xo("MsgType")<>"event" )   Then
                      wechatserv.ProcessMessage(e,"WeChat_ProcessRequestMsg") '处理消息并获取返回值
                     'Functions.Execute("LogText","回复=" & weRet)                       
              Else
                '通用事件头
                '如果网页路径定义了中间目录,如"ordertest/logon.htm" ,则下面的fl实际就是"d:\web\ordertest\weui\weui.me.js"
                '因此你需要把WeUI框架三个文件复制到"d:\web\ordertest\weui"目录下
                Dim fl As String = "d:\web\" & e.path
                If filesys.FileExists(fl)
                    Dim idx As Integer = fl.LastIndexOf(".")
                    Dim ext As String  = fl.SubString(idx)
                    Select Case ext
                        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
                            e.WriteFile(fl)
                            Return '这里必须返回
                    End Select
                End If
             
                Select Case e.Path
 Case "ApplyService.htm"
        Dim wb As New WeUI
        wb.AddPageTitle("","pageheader","服务申请","请选择下面的对应的服务按钮")
        With wb.AddGrid("","g1")
            .Add("c1","软件需求登记", "./images/button.png","DemandRegist.htm")    '没有问题
            .Add("c2","Cell", "./images/cell.png", "http://www.foxtable.com")
            .Add("c3","Toast", "./images/toast.png", "http://www.foxtable.com")
            .Add("c4","Dialog", "./images/dialog.png", "http://www.foxtable.com")
            .Add("c5","Progress", "./images/progress.png", "http://www.foxtable.com")
            .Add("c6","Msg", "./images/msg.png", "http://www.foxtable.com")
            .Add("c7","Article", "./images/article.png", "http://www.foxtable.com")
            .Add("c8","ActionSheet", "./images/actionSheet.png", "http://www.foxtable.com")
            .Add("c9","Icons", "./images/icons.png", "http://www.foxtable.com")
            .Add("c10","Panel", "./images/panel.png", "http://www.foxtable.com")
            .Add("c11","Tab", "./images/tab.png", "http://www.foxtable.com")
            .Add("c12","SearchBar", "./images/search.png", "http://www.foxtable.com")
        End With
        e.WriteString(wb.Build)


    Case "list.htm"
        Functions.Execute("List",e)
    Case "addnew.htm"
        Functions.Execute("AddNew",e)
    Case "edit.htm"
        Functions.Execute("Edit",e)
    Case "delete.htm"
        Functions.Execute("Delete",e)
    Case "SatisSurvey.htm"
        Functions.Execute("SatisSurvey",e) 
    Case "CCintroduction.htm"
        Functions.Execute("CCintroduction",e) 
    Case "order1.htm"
        Functions.Execute("JTweb",e)
       .AddInput("sl","数量","number")



                    Case "gettoken" '做为AccessToken中控服务
                        Dim atoken As WeChat.AccessToken = WeChat.WeChatAccessTokenController.GetServiceAccessToken(e.PlainText)
                        e.WriteString(atoken.ToJson()) '返回access_token的JSON数据
                    Case "scanlogon" '做为AccessToken中控服务
                        Functions.Execute("Http_ScanLogon" ,e)
                    Case Else
                        If e.Path.StartsWith("ordertest\") Then '公众号订单测试地址前缀都统一使用这个
                            Functions.Execute("Order_HttpRequest",e)
                        ElseIf e.Path.StartsWith("review\") Then '企业号订单审核地址前缀都统一使用这个
                            Functions.Execute("Order_HttpReview",e)
                        End If
                End Select      'e.path 的配对
            End If
    End Select     'e.host的配对
    '记录接收的消息,方便分析
    Dim str As new StringBuilder
    'str.AppendLine("host=" & e.host)
    str.AppendLine("path=" & e.Path)
    str.AppendLine("HttpMethod=" & e.Request.HttpMethod)
    'str.AppendLine("poststring=" & e.PlainText)
    'str.AppendLine("ip=" & e.Request.RemoteEndPoint().Address.ToString())
    For Each key As String In e.Values.Keys
        str.AppendLine(key & "=" & e.Values(key))
    Next
    Functions.Execute("logText",str.ToString)
catch ex As Exception
    Functions.Execute("LogText",ex)
    e.WriteString("")
End Try

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/16 8:26:00 [显示全部帖子]

貌似我修改了一个地方的代码, WeChat_GetServerByUrl    把   Find("SeverUrl = '" & url & "'") 直接改成了  Find("SeverUrl = 'http://ycyysf.viphk.ngrok.org/FoxTest'")  因为不改的话,数据库中明明有数据,可是偏偏就找不到,我奇怪了

'根据公众号数据库内部ID,获取微信服务'
Dim url As String = Args(0)
'Dim dr As DataRow = DataTables("WeChatPubNos").Find("SeverUrl = '" & url & "'")
'msgbox(url)
Dim dr As DataRow = DataTables("WeChatPubNos").Find("SeverUrl = 'http://ycyysf.viphk.ngrok.org/FoxTest'")
If dr IsNot Nothing Then
    'msgbox("dr不为空")
    Return Functions.Execute("WeChat_GetServer",dr)
End If

dr = DataTables("WeChatPubNoCallbackSettings").Find("URL= '" & url & "'")
If dr IsNot Nothing Then
    Return Functions.Execute("WeChat_GetServerByPubID",dr("PublicNoID"))
End If
Return Nothing

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/16 8:36:00 [显示全部帖子]

http://ycyysf.viphk.ngrok.org/FoxTest  后面差一个/  

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/3/16 9:28:00 [显示全部帖子]

解决了,我把 
WeChat_GetServerByUrl  函数  

的Find("SeverUrl = '" & url & "'") 直接改成了  Find("SeverUrl = 'http://ycyysf.viphk.ngrok.org/FoxTest'")   ,
但数据库中存的是  SeverUrl = 'http://ycyysf.viphk.ngrok.org/FoxTest   ,把代码改回,并把数据库改成 'http://ycyysf.viphk.ngrok.org/FoxTest/'   ,后面补了个/ 就好了

怪我当粗代码不熟,太粗心
[此贴子已经被作者于2017/3/16 9:28:45编辑过]

 回到顶部