# Problem with open-uri

**URL:** <https://www.ruby-forum.com/t/problem-with-open-uri/82609>\
**Category:** Ruby\
**Created:** [January 19, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609 "2007-01-19T16:31:40Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [January 19, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/1 "2007-01-19T16:31:40Z")

</div>

Hi !

I’m unable to open certain URIs with open-uri. Here is the code :

require ‘rexml/document’  
require ‘open-uri’  
xml = REXML::Document.new(open(“[http://myoms.net/soap/oms2.wsdl](http://myoms.net/soap/oms2.wsdl)”))

The error I get is :

/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream=': Tempfile  
is not a valid input stream. It must be (RuntimeError)  
either a String, IO, StringIO or Source.

I have tried to “cast” the parameter to IO with to\_io, but it still  
doesn’t work. Any ideas ?

---

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [September 25, 2007, 10:34pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/2 "2007-09-25T22:34:45Z")

</div>

On 1/12/07, David S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> /usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream=': Tempfile  
> is not a valid input stream. It must be (RuntimeError)  
> either a String, IO, StringIO or Source.
> 
> I have tried to “cast” the parameter to IO with to\_io, but it still  
> doesn’t work. Any ideas ?

if it works on strings just do

open(“[http://myurl.com](http://myurl.com)”).read

---

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [September 25, 2007, 10:36pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/3 "2007-09-25T22:36:29Z")

</div>

David S. wrote:

> /usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream=’: Tempfile  
> is not a valid input stream. It must be (RuntimeError)  
> either a String, IO, StringIO or Source.

ran that above code and it worked:

\<?xml version='1.0' encoding='UTF-8'?\>

\<s:schema elementFormDefault=‘qualified’  
attributeFormDefault=‘qualified’  
targetNamespace=‘uri://www.myoms.net/types/’\>  
\<s:complexType name=‘Time’\>  
\<s:sequence\>  
\<s:element maxOccurs=‘1’ name=‘year’ minOccurs=‘1’  
nillable=‘false’ type=‘s:long’/\>  
…

Maybe provide the actual code you are running, if it is not exaclty the  
above.

Cheers

---

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [September 25, 2007, 10:41pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/4 "2007-09-25T22:41:07Z")

</div>

xml =  
REXML::Document.new(open(“[http://myoms.net/soap/oms2.wsdl](http://myoms.net/soap/oms2.wsdl)”)_.read_)

Try that.

Dan

---

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [September 25, 2007, 10:38pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/5 "2007-09-25T22:38:03Z")

</div>

Daniel F. wrote:

> xml = REXML::Document.new(open(“[http://myoms.net/soap/oms2.wsdl](http://myoms.net/soap/oms2.wsdl)”)_.read_)
> 
> Try that.
> 
> Dan

That seems to work. I had tried, but apparently with the wrong syntax.

I have a few errors in my script, so I can really test it right now…

Thanks a lot !

---

<div class="post-metadata">

**Author:** ![davidstokar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/4da419/32.png) [@davidstokar](https://www.ruby-forum.com/u/davidstokar)\
**Post date:** [September 25, 2007, 10:47pm UTC](https://www.ruby-forum.com/t/problem-with-open-uri/82609/6 "2007-09-25T22:47:20Z")

</div>

ChrisH wrote:

> > The error I get is :  
> > xmlns:tns=‘uri://www.myoms.net/’  
> > \<s:sequence\>  
> > \<s:element maxOccurs=‘1’ name=‘year’ minOccurs=‘1’  
> > nillable=‘false’ type=‘s:long’/\>  
> > …
> 
> Maybe provide the actual code you are running, if it is not exaclty the  
> above.

The code I run is different, however this simple example fails too.

What I really don’t understand is that if I give a different URL (such  
as “[http://www.webservicex.net/genericbarcode.asmx?wsdl](http://www.webservicex.net/genericbarcode.asmx?wsdl)”), it’s OK.

The complete error stack trace is

/usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:133:in `stream=': Tempfile is not a valid input stream. It must be (RuntimeError) either a String, IO, StringIO or Source. from /usr/lib/ruby/1.8/rexml/parsers/baseparser.rb:100:in `initialize’  
from /usr/lib/ruby/1.8/rexml/parsers/treeparser.rb:8:in  
`initialize' from /usr/lib/ruby/1.8/rexml/document.rb:178:in `build’  
from /usr/lib/ruby/1.8/rexml/document.rb:45:in `initialize’  
from test.rb:3

When I reaserched this, all I was able to discover was that it seems to  
be a problem with Ruby’s duck typing  
([http://community.livejournal.com/evan\_tech/173207.html](http://community.livejournal.com/evan_tech/173207.html)) and/or REXML.

Any ideas ?
