当前位置: 编程技术>移动开发
本页文章导读:
▪non-numeric second argument to `wordlist' function non-numeric second argument to `wordlist' function:
用ndk编译一些c项目的时候,有时会出这个errornon-numeric second argument to `wordlist' function:错误指向 __gmsl文件的第512行网上有一些说法如下:修改文件andro.........
▪ 在tableview目录中显示搜索符号的方法 在tableview索引中显示搜索符号的方法
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{NSMutableArray *arr = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];[arr addObject:@"{search}"];//等价于[arr addOb.........
▪ 运用JAVA开发微信公众平台接口 使用JAVA开发微信公众平台接口
研究了下微信公众平台接口开发,可回复用户发来的请求
由于腾讯限制不能每天自动群发送信息
WeChatServlet 类:
package com.wechat.servlet;
import java.io.BufferedReade.........
[1]non-numeric second argument to `wordlist' function
来源: 互联网 发布时间: 2014-02-18
non-numeric second argument to `wordlist' function:
用ndk编译一些c项目的时候,有时会出这个error
错误指向 __gmsl文件的第512行
网上有一些说法如下:
修改文件android-ndk-r8c/build/gmsl/__gmsl第512行
修改为
[来源于:http://stackoverflow.com/questions/10285242/openssl-using-androids-ndk-problems/10295653#10295653]
这样就可以了
不过偶总觉得这个不靠谱,后来在google官方论坛上看到另外一个解决办法
首先需要在AndroidManifest.xml里面添加sdk版本(感觉至少要设置minSdkVersion)
然后一般都可以了,如果出现以下error
这个一般是环境变量的问题,可以修改下jni/Application.mk文件,添加APP_BUILD_SCRIPT 属性
用ndk编译一些c项目的时候,有时会出这个error
non-numeric second argument to `wordlist' function:
错误指向 __gmsl文件的第512行
网上有一些说法如下:
修改文件android-ndk-r8c/build/gmsl/__gmsl第512行
int_encode = $(__gmsl_tr1)$(wordlist 1,$1,$(__gmsl_input_int))
修改为
int_encode = $(__gmsl_tr1)$(wordlist 1,$(words $1),$(__gmsl_input_int))
[来源于:http://stackoverflow.com/questions/10285242/openssl-using-androids-ndk-problems/10295653#10295653]
这样就可以了
不过偶总觉得这个不靠谱,后来在google官方论坛上看到另外一个解决办法
首先需要在AndroidManifest.xml里面添加sdk版本(感觉至少要设置minSdkVersion)
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.ndk" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8"/> </manifest>
然后一般都可以了,如果出现以下error
Android NDK: Your APP_BUILD_SCRIPT points to an unknown file: /Android.mk
这个一般是环境变量的问题,可以修改下jni/Application.mk文件,添加APP_BUILD_SCRIPT 属性
LOCAL_PATH := $(call my-dir) APP_BUILD_SCRIPT := $(LOCAL_PATH)/../Android.mk
[2] 在tableview目录中显示搜索符号的方法
来源: 互联网 发布时间: 2014-02-18
在tableview索引中显示搜索符号的方法
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *arr = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];
[arr addObject:@"{search}"];//等价于[arr addObject:UITableViewIndexSearch];
return arr;
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *arr = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];
[arr addObject:@"{search}"];//等价于[arr addObject:UITableViewIndexSearch];
return arr;
}
[3] 运用JAVA开发微信公众平台接口
来源: 互联网 发布时间: 2014-02-18
使用JAVA开发微信公众平台接口
研究了下微信公众平台接口开发,可回复用户发来的请求
由于腾讯限制不能每天自动群发送信息
WeChatServlet 类:
package com.wechat.servlet; import java.io.BufferedReader; import java.io.IOException; import java.util.Arrays; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.wechat.utils.EncryptUtil; import com.wechat.utils.XmlUtil; public class WeChatServlet extends HttpServlet { private static final long serialVersionUID = 1L; //微信平台上填的Token和这里需要一致 public static final String Token = "loveplat"; /** * 微信公众平台验证调用方法 */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String[] ArrTmp = { Token, timestamp, nonce }; Arrays.sort(ArrTmp); StringBuffer sb = new StringBuffer(); for (int i = 0; i < ArrTmp.length; i++) { sb.append(ArrTmp[i]); } String pwd = EncryptUtil.Encrypt(sb.toString()); String echostr = request.getParameter("echostr"); System.out.println("pwd=="+pwd); System.out.println("echostr=="+echostr); if(pwd.equals(signature)){ if(!"".equals(echostr) && echostr != null){ response.getWriter().print(echostr); } } } /** * 用户向公众平台发信息并自动返回信息 */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer sb = new StringBuffer(); String line; Map<String, String> map = null; try { request.setCharacterEncoding("UTF-8"); BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) { sb.append(line); } map = XmlUtil.xml2Map(sb.toString()); } catch (Exception e) { e.printStackTrace(); } sb = new StringBuffer(); sb.append("<xml><ToUserName><![CDATA[").append( map.get("xml.FromUserName")).append( "]]></ToUserName><FromUserName><![CDATA[").append( map.get("xml.ToUserName")).append( "]]></FromUserName><CreateTime>").append( map.get("xml.CreateTime")).append( "</CreateTime><MsgType><![CDATA[text]]></MsgType>").append( "<Content><![CDATA[收到"); sb.append("]]></Content>").append("<FuncFlag>0</FuncFlag></xml>"); response.setCharacterEncoding("UTF-8"); System.out.println(sb.toString()); response.getWriter().print(sb.toString()); } @Override public void destroy() { super.destroy(); } @Override public void init() throws ServletException { super.init(); } }
XmlUtil 类:需要导入jdom.jar包
package com.wechat.utils; import java.io.IOException; import java.io.StringReader; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; public class XmlUtil { public static Map<String, String> xml2Map(String xmlStr) throws JDOMException, IOException { Map<String, String> rtnMap = new HashMap<String, String>(); SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new StringReader(xmlStr)); // 得到根节点 Element root = doc.getRootElement(); String rootName = root.getName(); rtnMap.put("root.name", rootName); // 调用递归函数,得到所有最底层元素的名称和值,加入map中 convert(root, rtnMap, rootName); return rtnMap; } /** * 递归函数,找出最下层的节点并加入到map中,由xml2Map方法调用。 * * @param e * xml 节点,包括根节点 * @param map * 目标map * @param lastname * 从根节点到上一级节点名称连接的字串 */ public static void convert(Element e, Map<String, String> map, String lastname) { if (e.getAttributes().size() > 0) { Iterator it_attr = e.getAttributes().iterator(); while (it_attr.hasNext()) { Attribute attribute = (Attribute) it_attr.next(); String attrname = attribute.getName(); String attrvalue = e.getAttributeValue(attrname); map.put(lastname + "." + attrname, attrvalue); } } List children = e.getChildren(); Iterator it = children.iterator(); while (it.hasNext()) { Element child = (Element) it.next(); String name = lastname + "." + child.getName(); // 如果有子节点,则递归调用 if (child.getChildren().size() > 0) { convert(child, map, name); } else { // 如果没有子节点,则把值加入map map.put(name, child.getText()); // 如果该节点有属性,则把所有的属性值也加入map if (child.getAttributes().size() > 0) { Iterator attr = child.getAttributes().iterator(); while (attr.hasNext()) { Attribute attribute = (Attribute) attr.next(); String attrname = attribute.getName(); String attrvalue = child.getAttributeValue(attrname); map.put(name + "." + attrname, attrvalue); } } } } } }
EncryptUtil类:
package com.wechat.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class EncryptUtil { public static String Encrypt(String strSrc) { MessageDigest md = null; String strDes = null; byte[] bt = strSrc.getBytes(); try { md = MessageDigest.getInstance("SHA-1"); md.update(bt); strDes = bytes2Hex(md.digest()); //to HexString } catch (NoSuchAlgorithmException e) { System.out.println("Invalid algorithm."); return null; } return strDes; } public static String bytes2Hex(byte[] bts) { String des = ""; String tmp = null; for (int i = 0; i < bts.length; i++) { tmp = (Integer.toHexString(bts[i] & 0xFF)); if (tmp.length() == 1) { des += "0"; } des += tmp; } return des; } }
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>WeChatServlet</servlet-name> <servlet-class>com.wechat.servlet.WeChatServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>WeChatServlet</servlet-name> <url-pattern>/WeChatServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
测试案例:
大家可关注微信公众账号:在线匹配交友
微信里面暂时搜索不到,大家可扫描二维码关注,二维码见附件
做了个最简单的回复信息,由于获取不到用户信息还没有想到好的想法
欢迎大家提供宝贵意见
暂时是本机做服务器的如果服务没开可能不会收到自动回复信息
最新技术文章: