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


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

主题: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
图片点击可在新窗口打开查看




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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/15 17:57:00 [只看该作者]

弹出值msgbox(e.plainText),看返回的是什么。

 

弹出你获取的值msgtype值,是什么。


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/15 19:53:00 [只看该作者]

 那就不是你if判断的问题啊,不能显示网页,跟踪到对应的生成页面的代码去。

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


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

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

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/3/15 20:21:00 [只看该作者]

那你就把你下面的那些代码加上。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110582 积分:562806 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/3/16 8:17:00 [只看该作者]

接收到的是微信消息,又怎么会弹出网页?

 

HttpServer有对3楼第一张图中的url的网页进行处理吗,例如下面这种

 

case "CCintroduction.htm"

 

检查数据库中配置的回调url,不能有CCintroduction.htm

 

红框代码的意思是,如果微信服务不为空,说明就是微信消息,就不会执行下面的代码了。微信消息回调和公众号菜单中的url是二回事来的,只要他们的地址不一致,示例是不会有问题的


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2017/3/16 8:22:00 [只看该作者]

要区分的话,可以用两个二级域名,一个域名用于微信计入,一个域名用于业务处理,通过e.host判断

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

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