小编Chr*_*ght的帖子

分析我的java代码发送的HTTP流量的最佳方法?

我有一些新的Java代码(使用Apache commons http库)和旧的(严格使用java 1.4 API),并尝试使用较新的apache commons库重写旧代码.然而,它不起作用,我正在努力找出原因.请求正在发送,但我的新代码在我无法访问的接收服务器上超时.由于旧代码有效,我必须搞砸http请求.使用某种HTTP流量嗅探器来检查发送的内容是非常有用的,这样我就能看出它们之间存在哪些差异.

我已经从网上下载了一些http嗅探器(这一个那个)但是既没有捕获我的java代码发送的任何http数据(但是当我从浏览器发送随机请求时它们确实有效).关于我如何掌握这些数据的任何想法?

java http traffic sniffer

6
推荐指数
1
解决办法
1万
查看次数

是否可以查询传递给Mockito模拟对象的参数?

我现在正在学习Mockito,我正在做的一件事就是巩固我的学习是将旧的JUnit测试从使用手动模拟类转换为使用Mockito模拟的类.但是,我遇到了一个我不确定如何处理的情况.

具体来说,我的测试单元构造一个String传递给模拟对象的单元作为方法调用的参数.我想测试一下String是否构造正确.挑战在于,部分String内容是在内部生成并在每次调用时发生变化的散列键.一个可行的解决方案是在我的控制下生成哈希生成并为测试执行注入一个虚拟生成器.但是,这是一项相当多的工作.

我的旧手滚动模拟类将存储传递给它的参数,我可以在我的测试中查询.这允许我String通过以下方式查询via的开头和结尾:

assertTrue(mockFtpClient.getFilePathAndName().startsWith("/data/inbound/XJSLGG."));
assertTrue(mockFtpClient.getFilePathAndName().endsWith(".pdf"));
Run Code Online (Sandbox Code Playgroud)

这足以满足我的口味.所以我的问题是,是否可以使用Mockito查询或获取传递给方法的参数,以便我可以执行与上述类似的操作?

更新24/06/2011:此时我已经除了Gnon的答案.但是,我发现了一些对我有用的东西.即ArgumentCaptor.以下是它的工作原理:

ArgumentCaptor<String> fileNameArgument = ArgumentCaptor.forClass(String.class);
verify(mockFtpClient).putFileOnServer(fileNameArgument.capture());
assertTrue(fileNameArgument.getValue().startsWith(START_FILE_NAME) &&
           fileNameArgument.getValue().endsWith(END_FILE_NAME));
Run Code Online (Sandbox Code Playgroud)

Mockito状态的javadoc ArgumentCaptor通常是一个更好的选择,当你有一个特定的参数匹配要求时,就像我在这里做的那样.

java mockito

6
推荐指数
1
解决办法
2557
查看次数

是否有Eclipse快捷方式按修饰符对成员进行排序?

我正在寻找Eclipse中的快捷方式,首选项或插件,它将通过可见性修饰符对Java成员进行排序.具体来说,我正在寻找这样排序的类:

public someClass {
   //public variables go first followed by 
   //protected and default variables and lastly
   //private variables

   //public methods above
   //proteted and default methods with
   //private methods at the bottom
}
Run Code Online (Sandbox Code Playgroud)

我不是按字母顺序,只是可见性修饰符.

java eclipse

5
推荐指数
1
解决办法
3415
查看次数

如何使用内联匿名类声明避免合成访问编译器警告,这意味着什么?

我有以下代码:

public class SomeClass {
   //InterfaceUpdateListener is an interface
   private InterfaceUpdateListener listener = new InterfaceUpdateListener(){
        public void onUpdate() {
           SomeClass.this.someMethod();  //complier complains on this line of code
        }
   };

   private void someMethod() {
     //do something in here on an update event occuring
   }

   //other code to register the listener with another class...
}
Run Code Online (Sandbox Code Playgroud)

我在 Eclipse 中的编译器抱怨说

Access to enclosing method 'someMethod' from type SomeClass is emulated by a synthetic accessor method.

谁能准确解释一下

  1. 这是什么意思,
  2. 如果我保持原样(因为它只是一个警告),可能的后果可能意味着什么,以及
  3. 我该如何解决?

谢谢

java eclipse compiler-warnings java-synthetic-methods

5
推荐指数
1
解决办法
4044
查看次数

应用程序小部件中的ViewFlipper

我正在玩构建一个新的小部件并且正在查看Android应用程序小部件文档,特别是关于支持哪些小部件类的部分.我注意到ViewFlipper受支持,但我很难找到如何在主屏幕小部件中使用它的任何示例.特别是,我想知道是否可以手动触发交换视图.在一个活动中,这看起来相对简单,一个例子是挂钩按钮的onclick监听器来调用鳍状肢的showNext().

RemoteViews对象有showNext和showPrevious方法,但我不知道我理解如何挂钩起来,从用户与小部件交互触发的事件.任何人都可以提供何时可以调用这些方法的示例?

看起来小部件中的按钮只能连接到意图而不是代码来练习鳍状肢.如果这个限制为真,那么在app小部件中唯一使用视图翻转器来自动翻转视图吗?

android viewflipper android-appwidget

5
推荐指数
1
解决办法
8453
查看次数

是什么导致AsyncTask无法执行?

我的应用程序中有一个非常零星的失败,我正试图解决.在进入应用程序时,主UI线程处理结束并将控制权传递给后台线程以检索某些数据.检索数据时,控件会传回主UI线程进行处理以进行显示.然而,在一些罕见的场合(它在99%的时间内工作),AsyncTask似乎无法被调用,使应用程序处于一个不稳定的静态状态,永远等待AsyncTask完成.

这是以下代码的快照Activity:

//method call from main UI thread
private void fetchSomeData() {
    Log.d("myTag", "In fecthSomeData()");
    new ReadFileAsyncTask<DataModel>().execute(this);
}
Run Code Online (Sandbox Code Playgroud)

这是ReadFileAsyncTask实施:

public class ReadFileAsyncTask<A> extends AsyncTask<I_ReadFileListener<A>, Void, A>
{
I_ReadFileListener<A> listener;

@Override
@SuppressWarnings("unchecked")
protected A doInBackground(I_ReadFileListener<A>... params)
{
    listener = params[0];
    Log.d("mytag", "BACKGROUND: Loading " + listener.getFilename() + " from disk");
    A fileContents = (A) FileUtils.readDataFromInternalStorage(listener.getContext(), listener.getFilename());
    return fileContents;
}

@Override
protected void onPostExecute(A result)
{
    Log.d("myTag", "FOREGROUND: Executing onFileRetrieved listener");
    listener.onFileRetrieved(result);
}
}
Run Code Online (Sandbox Code Playgroud)

捕获这个罕见故障日志:

In fetchSomeData()
... …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

5
推荐指数
1
解决办法
492
查看次数

使用equals()方法时,为什么具有相同数据的两个对象不相等

public class Account {

    String account;
    double balance;

    Account(String account, double balance) {
        this.account = account;
        this.balance = balance;
    }
}

public class AccountTest {

    public static void main(String[] args) {
        Account a1 = new Account("Sandy", 1000);
        Account a2 = new Account("Sandy", 1000);
        System.out.println(a1.equals(a2));
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行它显示"false"但对象包含变量中的相同数据时.解释.

java string equals

5
推荐指数
2
解决办法
1万
查看次数

使用 Observables(DRY) 避免重复代码

这是我来自 Angular 的代码(带有重命名的方法):

我有一个函数接口/契约

type IAutocomlete = (
  term: string,
  selectedIds?: string[]
) => Observable<TableFilterQueryResponse[]>;
Run Code Online (Sandbox Code Playgroud)

这是我将来要注入到我的组件中的草稿服务。我会有更多类似实现的方法。

    export class SuperCleanService {
      constructor(
        private dataController: DataController,
        private serviceController: ServiceController
      ) {}
    .....
    private searchAs$: IAutocomlete = (term, selectedIds) => {
        return this.dataController
          .service1GET(term, selectedIds)
          .pipe(
            map((res) =>
              res.map((a) => ({
                viewValue: a.name,
                value: a.id
              }))
            )
          );
      };
      private searchB$: IAutocomlete = (term, selectedIds) => {
        return this.serviceController
          .service1(term, selectedIds)
          .pipe(
            map((res) =>
              res.map((a) => ({
                viewValue: a.id,
                value: a.id
              }))
            ) …
Run Code Online (Sandbox Code Playgroud)

javascript dry rxjs angular

5
推荐指数
1
解决办法
143
查看次数

如何使我的xml安全地进行解析(当它具有&字符时)?

我已经获得了一个xml字符串,我需要通过解析器.它目前因为非法的xml字符而抱怨.很简单的例子:

<someXml>this & that</someXml>
Run Code Online (Sandbox Code Playgroud)

我知道解决方案是替换&&amp;,但我没有生成XML,因此无法控制值.

简单的字符串替换不是正确的方法,因为'&'在XML中具有特殊含义,并且全局替换'&'与'&' 会破坏预期的特殊含义.有没有一个解决方案来获取一个完整的xml文档并"修复"它以便'&'成为'&',但只是在预定的位置?我可以安全地将'&'替换为'& '(注意两边的空格)?

java xml ampersand

4
推荐指数
1
解决办法
1446
查看次数

如何检查该字段是否包含java中的连字符

我的对象-从Log.d("FormattedDate",Object.getDOB())返回我;

if (!Object.getDOB().matches("[^-]*")) {
    txtDOB.setText(Object.getDOB());
   } else {
    txtDOB.setText("-");
}
Run Code Online (Sandbox Code Playgroud)

我正在检查我的Object.getDOB()是否匹配-,然后显示emptry字符串,但此regExp不起作用.

java

4
推荐指数
1
解决办法
8217
查看次数