아래의 소스는 SAX Parser를 이용한 xml파일을 파싱 하는 부분입니다. 주석처리한 부분처럼 프로젝트 내에있는 xml파일을 직접 파싱은 되는데 웹서버에 있는 xml파일을 파싱하려고 하니 java.net.SocketTimeoutException 오류가 뜹니다. setConnectTimeout을 15초 정도로 충분히 주어도 마찬가지네요. 어떻게 해야 할까요? 도움이 필요합니다.

package te.exam;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;

public class SAXEx extends Activity {
EditText et = null;
String result = "";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.network_domparser);
        
        et = (EditText) findViewById(R.id.result);
        findViewById(R.id.parse).setOnClickListener(
        new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
URL url = new URL("http://xxx.xxx.xxx.xxx/Test/test.xml); // URL of the XML
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
InputSource inputsource = new InputSource(is);
inputsource.setEncoding("utf-8");
parser.parse(is, new SaxHandler());
et.setText(result);
/*
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
InputStream is = getResources().openRawResource(R.raw.test);
parser.parse(is, new SaxHandler());
et.setText(result);
*/
} catch (Exception e) {
Log.e("TAG", e+" : SAX fail");
}
}
});
    }
    
    // SAX 를 이용한 DefaultHandler 작성
    class SaxHandler extends DefaultHandler {
    boolean bItem = false;
   
    String strAttrs = "";
   
    // Text 노드를 만났을 때
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
if ( bItem ) {
Log.d("TAG", "item characters");
result += new String(ch, start, length);
result += "\n";
result += strAttrs;
result += "\n";
}
}

// 시작 Element 노드를 만났을 때
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
if ( localName.equals("item") ) {
Log.d("TAG", "item element");
bItem = true;
strAttrs = "";
for ( int i = 0 ; i < attributes.getLength() ; i++ ) {
strAttrs += attributes.getLocalName(i);
strAttrs += "=";
strAttrs += attributes.getValue(i);
strAttrs += "\n";
} // for 문 끝
} // if 문 끝
}

// 끝 Element 노드를 만났을 때
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
if ( bItem ) {
bItem = false;
}
}
    }
}