注意:我已经编辑了我的旧问题,尽可能清楚.
我有一个名为的第三方库person.lib及其标题person.h.这是我的实际项目结构,它编译和运行完美.
main.cpp中
#include <iostream>
#include <time.h>
#include <ctype.h>
#include <string>
#include "person.h"
using namespace person;
using namespace std;
class Client : public Person
{
public:
Client();
void onMessage(const char * const);
private:
void gen_random(char*, const int);
};
Client::Client() {
char str[11];
gen_random(str, 10);
this->setName(str);
}
void Client::onMessage(const char * const message) throw(Exception &)
{
cout << message << endl;
}
void Client::gen_random(char *s, const int len) {
//THIS FUNCTION GENERATES A RANDOM NAME WITH …Run Code Online (Sandbox Code Playgroud) 我在我的Java项目中使用HtmlUnit来测试一个内部有Javascript的网页.我的代码点击一个调用Javascript函数的按钮,将用户重定向到另一个页面(如链接缩短服务).这是代码:
public void click()
{
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://mywebsite.com");
HtmlImage a = page.getHtmlElementById("my_button");
page = (HtmlPage) a.click();
}
Run Code Online (Sandbox Code Playgroud)
问题是HTMLUnit使用默认的用户代理(Internet Explorer 8),只有少数设置(Firefox 17和Chrome).如果检测到另一个浏览器/用户代理,mywebsite.com的行为不会更改.顺便说一下,网站存储用户代理字符串用于统计目的,每次访问时我都需要更改它.
我试图通过BrowserVersion以这种方式创建一个新对象来更改用户代理:
BrowserVersion bv = new BrowserVersion("Chrome", "Mozilla/5.0", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36", 28);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,当我实例化传递我的bv对象的Webclient 对象时,我的代码不再起作用了.根据我的理解,HtmlUnit文档说我必须检查我的BrowserVersion中指定的用户代理是否具有运行Javascript的正确功能.
但是,请注意常量不足以完全自定义浏览器,您还需要查看BrowserVersionFeatures和"javascript"包中的类.
这是什么意思?为什么HtmlUnit不再起作用?我的目标只是更改用户代理字符串.我怎样才能做到这一点?请注意,我也尝试过Selenium,但没有成功.谢谢您的帮助.
编辑1:
找到了这个技巧.如果我实例化BrowserVersion如下:
BrowserVersion bv = new BrowserVersion("Netscape", "blablabla", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36", 0);
Run Code Online (Sandbox Code Playgroud)
它有效,但我不明白为什么.我必须将第一个字符串设置为Netscape(尝试过Chrome和Mozilla,但它不起作用).第二个字符串是随机的,如果将Netscape设置为第一个参数,我可以放任何东西.第三个字符串是格式良好的用户代理,第四个参数是指示版本的整数.你能解释一下为什么它只Netscape作为第一个参数传递并随机传递给其他人(第二个除外)吗?
更新:
有时它不起作用(如上所述).对于某些用户代理字符串,页面未正确加载.我无法理解为什么用户代理应该修改HtmlUnit的行为,因为我很确定Javascript非常简单并且应该由所有浏览器版本运行.所以,我的最后一个问题是:如何在不改变执行Javascript时的行为的情况下更改HtmlUnit中的用户代理字符串?
这是问题:我有一个自定义的ArrayAdapter(覆盖getView).每个项目都有
其中一个ImageView是可点击的并启用了PopupMenu,所以我为列表的每个项目都有一个PopupMenu.现在,对于那个菜单,我需要从项目到锚定的一些参数.那么,如何将信息(如位置)传递给从PopupMenu语音调用的方法?附上了xml文件.
item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="5dp" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="6dip"
android:contentDescription="TODO"
android:src="@drawable/ic_launcher" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/firstLine"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:maxHeight="60dp"
android:text="Title"
android:textSize="16sp" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:contentDescription="TODO"
android:onClick="showMenu"
android:src="@drawable/abc_ic_menu_moreoverflow_normal_holo_light" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_alignParentLeft="true"
android:layout_below="@+id/firstLine"
android:ellipsize="marquee"
android:singleLine="true"
android:text="Author"
android:textSize="12sp" />
</RelativeLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
menu_item.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/preview"
android:onClick="preview"
android:title="@string/preview"/>
<item
android:id="@+id/download"
android:onClick="download"
android:title="@string/download"/>
</menu> …Run Code Online (Sandbox Code Playgroud) 我从来没有遇到过这样的事情,我不知道这种类型的编码!这是什么?(我对Java很新)
DefaultHandler handler = new DefaultHandler() {
boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
// code
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
// code
}
public void characters(char ch[], int start, int length) throws SAXException {
// code
};
Run Code Online (Sandbox Code Playgroud)
构造函数调用后有一个大括号(!?),似乎有一些方法的重写.然后用分号终止支架.在构造函数调用之后我从未见过大括号.这是正常的吗?怎么称呼?谢谢!
ps:在Eclipse上,如果我删除分号,则表示LocalVariableDeclarationStatement错误.
我通过反编译检查了在某些应用程序的清单中,服务不是通过单独的进程启动的.顺便说一句,在任务管理器中,它显示为"正在运行".
例如,在Android 4.4.2上,Facebook有0个进程和2个服务正在运行.从文档中(如果我错了,请纠正我)我已经明白服务在其应用程序的相同过程中运行.如果进程终止,则服务停止(并且可以由AlarmManager或START_STICKY自动重新启动).
因此,如果它没有在一个单独的进程内启动,那么至少应该有一个服务可以运行的进程.那么,即使没有进程,服务是否可能运行?我再说一遍,服务(来自清单)没有GOT指令android:background
编辑1: 这似乎是Android 4.4.2的一个错误.看到这个和这个.在我的情况下,当我从列表中滑动应用程序时遇到问题(如第二个链接中所述)
编辑2: 如果我错了,请纠正我,这是我所理解的.
一个Service对象首次创建时startService()被调用.onCreate()将在该Service对象上调用onStartCommand()并将跟随.从现在开始:
stopSelf()
未调用)但它没有运行.START_STICKY(和其他重启常量)或手动调用startService().当服务从系统中终止时,将再次调用onCreate.现在,这是Android <4.4.2上的正常行为.在KitKat上,如果从LRU列表中滑动应用程序,则进程会死亡,即使使用START_STICKY,它也不会自动重新启动.解决方法是AlarmManager.这是对的吗?
我已经看过了,但它对我的代码不起作用.这是我独特的课程:
public static void main(String[] args) {
try {
Main window = new Main();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
protected void createContents() {
shell = new Shell(SWT.CLOSE | SWT.MIN | SWT.TITLE | SWT.ON_TOP);
shell.setSize(301, 212);
shell.setText("MyShell");
// ...Other contents...
btn = new Button(shell, SWT.NONE);
btn.setBounds(114, 151, 76, 25);
btn.setText("BUTTON!");
btn.addSelectionListener(new SelectionAdapter() {
public …Run Code Online (Sandbox Code Playgroud) 我正在使用 Gson 来提取一些字段。顺便说一句,我不想创建一个类,因为我在所有 JSON 响应中只需要一个值。这是我的回应:
{
"result": {
"name1": "value1",
"name2": "value2",
},
"wantedName": "wantedValue"
}
Run Code Online (Sandbox Code Playgroud)
我需要wantedValue,但我不想创建整个类进行反序列化。使用Gson可以实现这一点吗?
警告:C++ noob
我在StackOverflow上阅读了关于字符串加密的多篇帖子.顺便说一句,他们没有回答我的疑虑.我必须在我的代码中插入一个或两个硬编码字符串,但我想在调试/逆向工程时难以用纯文本阅读.这不是全部:我的字符串是URL,所以一个简单的数据包分析器(Wireshark)可以读取它.我说很难,因为我知道,当代码运行时,字符串在某处(在RAM中?)解密为纯文本,有人可以读取它.因此,假设不可能完全保护我的字符串,那么在C++中加密/解密它的最佳方法是什么?我在考虑这样的事情:
//I've omitted all the #include and main stuff of course...
string encryptedUrl = "Ajdu67gGHhbh34590Hb6vfu6gu" //Encrypted url with some known algorithm
URLDownloadToFile(NULL, encryptedUrl.decrypt(), C:\temp.txt, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
包分析怎么样?我确定没有办法隐藏URL,但也许我错过了什么?谢谢你,对不起我最糟糕的英语!
编辑1:我的应用程序做了什么?
这是一个简单的登录脚本.我的应用程序从URL下载文本文件.此文件包含使用fstream库读取的加密字符串.然后解密该字符串并用于在另一个站点上登录.它非常弱,因为没有数据库,没有盐,没有散列.我的成就是确保url和登录字符串都不容易从二进制文件的静态分析中读取,并且可能通过动态分析(调试,逆向工程等)尽可能地难以读取.
正如问题所说,我在最后一堂课中有多个决赛字符串,如下所示:
public final class MyStrings {
public static final String stringOne = "this is string one";
public static final String stringTwo = "this is string two";
public static final String stringThree = "this is string three";
public static final String stringFour = "this is string four";
public static final String stringFive = "this is string five";
}
Run Code Online (Sandbox Code Playgroud)
我知道将它们放在列表或数组中会更容易,但我想避免运行时填充这些结构.可能吗?从该类中随机选择字符串的最简单方法是什么?谢谢.
我必须将多个字符串组合成一个来进行比较.这个分组应该完全像Java OO范例:一个"描述"子字符串的字符串.例:
String one = "hammer";
String two = "screwdriver";
String three = "pliers";
Run Code Online (Sandbox Code Playgroud)
现在让我们说你要"描述"它们:
String str = "tool"
Run Code Online (Sandbox Code Playgroud)
上面的所有字符串都是工具 现在,我的代码有一个,两个,三个字符串,并将它们更改为"工具".因此,例如,字符串1成为工具,字符串2和字符串3相同.如何"分类"他们?另一个扩展示例:
String one = "hammer"
String two = "screwdriver";
String three = "pliers";
String four = "horse";
String five = "cat";
String six = "dog";
public void stringConverter(String str)
{
if ("string match to an animal")
str = "animal";
if ("string match to a tool")
str = "tool";
}
Run Code Online (Sandbox Code Playgroud)
也许这是一个愚蠢的事情,但现在我没有任何想法!谢谢!
编辑:我的团队是有限的,我知道我只有猫,狗,马,锤等...编辑2:很难表达我!它应该是这样的:
Group Animal = {cat, dog, horse}
Group Tools = …Run Code Online (Sandbox Code Playgroud) java ×5
string ×3
android ×2
c++ ×2
compilation ×1
constructor ×1
encryption ×1
final ×1
grouping ×1
gson ×1
header ×1
htmlunit ×1
javascript ×1
json ×1
listview ×1
overriding ×1
popupmenu ×1
process ×1
random ×1
swt ×1
url ×1
user-agent ×1
xml ×1