小编xen*_*ide的帖子

How can I make LWP::UserAgent look like another browser?

This is my first post on SO, so be gentle. I'm not even sure if this belongs here, but here goes.

我想访问我的一个个人帐户的一些信息.该网站写得不好,要求我手动输入我想要的信息日期.这确实很痛苦.我一直在寻找借口来学习更多Perl所以我认为这将是一个很好的机会.我的计划是编写一个Perl脚本,该脚本将登录到我的帐户并为我查询信息.但是,我很快陷入困境.

my $ua = LWP::UserAgent->new;
my $url = url 'https://account.web.site';
my $res = $ua->request(GET $url);
Run Code Online (Sandbox Code Playgroud)

生成的网页基本上表示我的网络浏览器不受支持.我尝试了许多不同的值

$ua->agent("");
Run Code Online (Sandbox Code Playgroud)

但没有任何事情似乎有效.谷歌周围建议使用这种方法,但它也表示perl在网站上被用于恶意原因.网站阻止这种方法吗?我甚至想做什么?是否有更合适的不同语言?我正在努力做甚至合法甚至是好主意?也许我应该放弃我的努力.

请注意,为了防止泄露任何私人信息,我在这里写的代码不是我正在使用的确切代码.但我希望这很明显.

编辑:在FireFox中,我禁用了JavaScript和CSS.我没有"不兼容的浏览器"错误就登录了.它似乎不是JavaScript问题.

perl lwp

8
推荐指数
1
解决办法
8982
查看次数

8
推荐指数
3
解决办法
2806
查看次数

如何使用Test :: WWW :: Mechanize :: PSGI测试Dancer应用程序?

我不确定以正确的方式为www mechanize设置脚本应用程序.我确实尝试过至少一个可行的备用,但是我试图通过测试传递配置,这样我就可以使测试套件更安静.

#!/usr/bin/perl
use strict;
use warnings;
use Dancer qw(:syntax);
use MyApp;
use Test::More;
use Test::WWW::Mechanize::PSGI;
set apphandler => 'PSGI';
set log => 'warning';
set logger => 'note';

my $mech = Test::WWW::Mechanize::PSGI->new(
    app => dance, # app => do('bin/app.pl'), #
);

$mech->get_ok('/login') or diag $mech->content;
done_testing;
Run Code Online (Sandbox Code Playgroud)

do在脚本上运行似乎允许测试运行,但是日志变量没有正确设置,同时似乎有更好的方法来做到这一点.

更新

我想我可能会越来越接近一个解决方案......

#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use Cwd qw( realpath );
use Dancer qw(:syntax);
use MyApp;
use Test::More;
use Test::WWW::Mechanize::PSGI;
set apphandler => 'PSGI';

my $appdir = realpath( "$FindBin::Bin/.." …
Run Code Online (Sandbox Code Playgroud)

testing perl www-mechanize dancer psgi

8
推荐指数
1
解决办法
1122
查看次数

SOAP :: Lite生成<c-gensym ..>如何摆脱它?

这就是我认为相关的SOAP :: Lite代码

my $req3 = SOAP::Lite->new(
    readable => 1,
    autotype => 0,
    proxy    => 'https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor',
);

$req3->requestMessage(
    \SOAP::Data->new(
        name => 'item',
        attr => { foo => '0' },
        value => \SOAP::Data->new(
            name => 'foo',
            value => 1,
        ),
     ),
);
Run Code Online (Sandbox Code Playgroud)

它正在生成这个XML

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<requestMessage>
  <c-gensym9>
    <item foo="0">
      <foo>1</foo>
    </item>
  </c-gensym9>
</requestMessage>
</soap:Body>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么<c-gensym9 />嵌套在里面,<requestMessage>但我不需要在那里.任何人都可以解释为什么它在那里?以及如何重写代码以便它不是?

xml perl soap

8
推荐指数
1
解决办法
2578
查看次数

访问舞者日志对象?

通常情况下,当你使用舞者时,你可以打电话

debug 'foo';
Run Code Online (Sandbox Code Playgroud)

它会记录文本.但我希望能够在不导入舞者语法的对象中记录内容.我想知道是否有办法让舞者只是把它的日志对象(我假设有一个)交给我,这样我就可以使用对象语法调用类似调试的东西,例如

$logger->debug( 'foo' );
Run Code Online (Sandbox Code Playgroud)

perl logging object dancer

8
推荐指数
1
解决办法
1128
查看次数

你可以在PL/Perl中使用库吗?

我很好奇是否在编写PL/Perl函数时,如果我可以有一个use My::Lib;语句,或启用pragma和功能(例如' use strict; use feature 'switch';).

postgresql perl plperl

7
推荐指数
1
解决办法
836
查看次数

无法找到静态元模型字段

这个错误是什么意思?

 07:48:42,807 ERROR [org.hibernate.jpa.internal.metamodel.MetadataContext] (ServerService Thread Pool -- 25) HHH015011: Unable to locate static metamodel field : com.lm.model.UserId_#id 
Run Code Online (Sandbox Code Playgroud)

这就是该字段的定义方式

@Embeddable
public class UserId implements Identifier<UserId> {
    @Column( name = "user_id", columnDefinition = "uuid" )
    protected UUID id;                                                                                                                                                                     
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

故障转移@Type为h2?

我必须@Type为PostgreSQL 做,以获得它的本机UUID类型,但这导致H2的查询问题

@Id
@Override
@Type(type = "pg-uuid")
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "task_id", columnDefinition = "uuid")
public UUID getId() {
    return id;
}
Run Code Online (Sandbox Code Playgroud)

这是异常的原因:

org.h2.jdbc.JdbcSQLException: Hexadecimal string contains non-hex character: "aced0005-7372-000e-74c2-aa3c957d4f00"; SQL statement: select character0_.task_id as task_id1_0_0_, character0_.name as name2_0_0_ from characters character0_ where character0_.task_id=? 
Run Code Online (Sandbox Code Playgroud)

我能做些什么来充分利用这两个世界并为H2和PostgreSQL提供相同的实体?

org.springframework.orm.jpa.JpaSystemException: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:244)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:155)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
    at …
Run Code Online (Sandbox Code Playgroud)

postgresql hibernate jpa h2 spring-data

7
推荐指数
1
解决办法
1139
查看次数

如何使用@IfProfileValue测试配置文件是否处于活动状态?

所以容易混淆@IfProfileValue@Profile或无关@ActiveProfiles.@Profile测试以查看配置文件是否处于活动状态,@ActiveProfiles将它们设置为活动状态,并@IfProfileValue允许您检查Spring中的内容Environment.武汉理工大学?我会弃用所有这些,添加新的@IfEnvironment,@IfProfile@ActivateProfiles.

除了评论之外,我如何使用@IfProfileValue来检测我的个人资料是否有效?我目前没有在这个项目上使用Spring Boot.答案应该显示代码,我们将假设我希望测试在配置文件被激活时运行@ActiveProfiles( "test" ).

我试过@IfProfileValue(name = "activeProfiles", value = "test")但似乎跳过了测试,这意味着它不匹配.我要去推测问题可能与事实,做ActiveProfiles一个Collection.

java junit spring spring-test

7
推荐指数
2
解决办法
7582
查看次数

Jackson:参数 #0 没有属性名称,不可注入:不能用作 Creator

完全错误

Invalid type definition for type `com.xenoterracide.brix.configloader.spi.RawFileConfiguration`: Argument #0 has no property name, is not Injectable: can not use as Creator [constructor for com.xenoterracide.brix.configloader.spi.RawFileConfiguration, annotations: {interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}]
 at [Source: (File); line: 1, column: 1]
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type `com.xenoterracide.brix.configloader.spi.RawFileConfiguration`: Argument #0 has no property name, is not Injectable: can not use as Creator [constructor for com.xenoterracide.brix.configloader.spi.RawFileConfiguration, annotations: {interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}]
 at [Source: (File); line: 1, column: 1]
Run Code Online (Sandbox Code Playgroud)

如果我正在阅读它,javap则告诉我该类确实具有命名参数

  com.xenoterracide.brix.configloader.spi.RawFileConfiguration(java.util.Map<java.lang.String, java.lang.String>, java.lang.Boolean, java.lang.String, java.lang.String);
    descriptor: (Ljava/util/Map;Ljava/lang/Boolean;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0000) …
Run Code Online (Sandbox Code Playgroud)

java gradle jackson

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