我必须从网址中检索某些信息。为此,我必须在url的字段中输入文本。我正在使用GET操作。我必须修改文本以用"%20"替换空格。有时,文本(从数据库中获取)形成得很糟糕。我想知道行号,这样我就可以手动更改数据库中这些行的文本并再次运行它。我试图使用日志和错误部分,但运气不佳。有没有人知道如何做到这一点?
答案 0 :(得分:0)
到目前为止,我为您的问题想出了以下工作设计:
诀窍是捕获tHttpRequest组件的异常并在控制台上打印必要的细节。对于此示例,我包括行号,异常消息和产生异常的URL。
输出(我无法重现您的“非法字符错误”,所以我选了另一个):
如果你真的需要将行号输出到文件中,事情就会变得复杂一些。
我们不是将信息直接打印到控制台上,而是将所有行号收集到tJavaFlex内的类型(Java)List的上下文变量中。在通常的URL处理(我从作业设计中遗漏以保持示例很小)之后,我们遍历Java List 并将其保存到tHashOutput中,以便我们最终可以写入文件。
我们不能直接写入tLoop部分中的文件,因为迭代流会导致tFileInputDelimited多次打开的情况。如果禁用“附加”,则最后只有最后一个错误的URL行号最终会出现在输出文件中。如果启用了“附加”,您将在第一次作业运行后获得完整的行号列表 - 但是每次运行作业时都会附加,使列表越来越长。解决方法是使用依赖于运行时的文件名(例如时间戳)或在作业运行开始时删除文件。我选择了第三个选项,每次运行作业时都会覆盖文件。您可以在这些选项中选择最适合您用例的选项。
默认情况下,tHashOutput / tHashInput组件不可见,但必须先启用才能显示:https://www.talendforge.org/forum/viewtopic.php?pid=107249#p107249
上下文变量:
INIT:
tJavaFlex“捕获错误”,结束代码:
tLoop:
tFixedFlowInput“badURL”:
tHashOutput:
需要启用“附加”。